Compare commits

..

2047 Commits

Author SHA1 Message Date
Deepesh Garg
540559d6fd Merge branch 'version-13-pre-release' into version-13 2022-02-11 19:14:54 +05:30
Deepesh Garg
5df93916b4 bumped to version 13.20.1 2022-02-11 19:34:54 +05:50
Deepesh Garg
6cb5e85342 Merge pull request #29758 from frappe/mergify/bp/version-13-pre-release/pr-29756
Revert "fix(India): Tax calculation for overseas suppliers" (backport #29756)
2022-02-11 18:06:03 +05:30
Deepesh Garg
5855225366 Revert "fix(India): Tax calculation for overseas suppliers"
(cherry picked from commit ea20c63182)
2022-02-11 12:11:31 +00:00
Ankush Menat
70951bd833 ci: bump ci python version for patch test 2022-02-10 10:57:24 +05:30
Rohit Waghchaure
9dec4a2454 Merge branch 'version-13-pre-release' into version-13 2022-02-09 14:44:10 +05:30
Rohit Waghchaure
7e910f21b8 bumped to version 13.20.0 2022-02-09 15:04:10 +05:50
rohitwaghchaure
b27c4ac6e2 Merge pull request #29727 from rohitwaghchaure/change-log-for-v13-20
chore: change log for v13.20.0
2022-02-09 14:42:15 +05:30
Rohit Waghchaure
a451c49a42 chore: change log for v13.20.0 2022-02-09 14:40:07 +05:30
Deepesh Garg
427d8c865a Merge pull request #29678 from frappe/mergify/bp/version-13-pre-release/pr-29460
feat: Refund entry against loans (backport #29460)
2022-02-07 19:17:07 +05:30
Deepesh Garg
5ed44bdb88 Merge pull request #29686 from frappe/mergify/bp/version-13-pre-release/pr-29660
fix: Add missing key in Loan (backport #29660)
2022-02-07 19:05:06 +05:30
Deepesh Garg
eb36ebee8f fix: Resolve conflicts 2022-02-07 18:49:57 +05:30
Deepesh Garg
159e492053 test: Add test case for repayment against partially disbursed loans
(cherry picked from commit ef69d1fd38)
2022-02-07 13:16:19 +00:00
Abhinav Raut
6dbb3cdf75 fix: missing key in loan
(cherry picked from commit d0043bdbac)
2022-02-07 13:16:19 +00:00
Deepesh Garg
25012399fa fix: Add disbursement accounts to tests
(cherry picked from commit 8ece2845f2)
2022-02-07 09:09:20 +00:00
Deepesh Garg
4ab6994b3d feat: Refund entry against loans
(cherry picked from commit c68c70f8bc)

# Conflicts:
#	erpnext/loan_management/doctype/loan/loan.json
#	erpnext/patches.txt
2022-02-07 09:09:19 +00:00
Ankush Menat
e618571fb3 fix: dont show cancelled PO items in plan report
(cherry picked from commit 6459ceaea1)
2022-02-06 20:07:22 +05:30
Marica
c99a14a7f3 Merge pull request #29646 from frappe/mergify/bp/version-13-pre-release/pr-29642
fix: Regenerate packed items on newly mapped doc (backport #29642)
2022-02-04 23:25:17 +05:30
marination
db24fca8c1 fix: Regenerate packed items on newly mapped doc
- Cannot determine action on newly mapped DN that hasnt been inserted
- Rows could have been deleted, updated, added, etc. before first save
- In this case , reset packing table

(cherry picked from commit bd41a99c8a)
2022-02-04 17:33:17 +00:00
Marica
e095e27cb9 Merge pull request #29629 from frappe/mergify/bp/version-13-pre-release/pr-29456
fix: Incorrect packing list for recurring items & code cleanup (backport #29456)
2022-02-04 10:17:46 +05:30
marination
bdfb478b3b fix: (Linter) import sequence
(cherry picked from commit f18ec2d947)
2022-02-03 16:41:20 +00:00
marination
2428812dcc test: Packed Items test file
(cherry picked from commit 4e7b4dc9a8)
2022-02-03 16:41:20 +00:00
marination
677a3975ba refactor: Price fetching and updation logic
- fetch price from price list, use item master valuation rate as fallback fo0r packed item
- use a item code, item row name map to maintain cumulative price
- reset table if item in a row is replaced
- loop over items table only to set price, lesser iterations than packed items table

(cherry picked from commit 2f4d266ee1)
2022-02-03 16:41:19 +00:00
marination
5d37c9c38d chore: Break updation logic into smaller functions
- Smaller functions for updation
- All calls visible from parent function to avoid context switching due to nested calls

(cherry picked from commit 2c14ab0439)
2022-02-03 16:41:19 +00:00
marination
b836d4fe25 fix: Linter and minor code refactor
- Create an indexed map of stale packed items table to avoid loops to check if packed item row exists
- Reset packed items if row deletion takes place
- Renamed functions to self-explain them
- Split long function
- Reduce function calls inside function (makes it harder to follow through)

(cherry picked from commit 4c677eafe9)
2022-02-03 16:41:18 +00:00
marination
153fd355bc chore: SQL to QB & accomodate Update Items
- `doc_before_save` does not exist via Update Items (updates stuff in the backend so doc isn't considered unsaved/dirty)
- converted more raw sql to qb and ORM

(cherry picked from commit f8a5786542)
2022-02-03 16:41:18 +00:00
marination
350cac9207 fix: Incorrect packing list for recurring items & code cleanup
- Fix Incorrect packing list for recurring items in the Items table
- Re-organised functions based on external use and order of use
- Deleted `clean_packing_list` function and reduced no.of loops
- Raw SQL to QB
- Minor formatting changes

(cherry picked from commit 3f48fc1898)
2022-02-03 16:41:17 +00:00
mergify[bot]
c054d1f7ee fix: ignore empty customer/supplier in item query (#29610) (#29614)
* fix: dont try to filter by customer/supplier if None

* test: item query with emtpy supplier

(cherry picked from commit 41a95e5624)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2022-02-03 14:44:33 +05:30
Deepesh Garg
68b337316a Merge pull request #29573 from frappe/mergify/bp/version-13-pre-release/pr-29561
feat: Provisional accounting for expenses (backport #29451) (backport #29561)
2022-02-01 20:39:09 +05:30
Deepesh Garg
1ab3714fd0 chore: Resolve conflicts 2022-02-01 19:41:00 +05:30
Deepesh Garg
dbb3ea3a6e chore: fix tests
(cherry picked from commit 640b2d57de)
2022-02-01 12:42:09 +00:00
Deepesh Garg
abfccde664 fix: Linting Issues
(cherry picked from commit c71dbda166)
2022-02-01 12:42:09 +00:00
Deepesh Garg
293ec00023 chore: Resolve conflicts
(cherry picked from commit aa16a4bb5f)

# Conflicts:
#	erpnext/patches.txt
2022-02-01 12:42:09 +00:00
Deepesh Garg
061a569f4d feat: Provisional accounting for expenses (#29451)
* feat: Provisonal accounting for expenses

* fix: Method for provisional accounting entry

* chore: Add test case

* fix: Remove test case

* fix: Use company doctype

* fix: Add provisional expense account field in Purchase Receipt Item

* fix: Test case

* fix: Move provisional expense account to parent

* fix: Patch

(cherry picked from commit 528c71382f)

# Conflicts:
#	erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
#	erpnext/patches.txt
#	erpnext/setup/doctype/company/company.json
#	erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
#	erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
(cherry picked from commit a54c84728f)

# Conflicts:
#	erpnext/patches.txt
2022-02-01 12:42:08 +00:00
rohitwaghchaure
8c0613a600 Merge pull request #29542 from rohitwaghchaure/merge-branch-hotfix-to-pre-release-for-13-20
chore: Merge branch 'version-13-hotfix' into 'version-13-pre-release'
2022-01-31 20:16:11 +05:30
Rohit Waghchaure
862961d92e chore: Merge branch 'version-13-hotfix' into 'version-13-pre-release' 2022-01-31 19:38:44 +05:30
mergify[bot]
5ac11a4ba5 refactor!: dynamically compute bom_level (backport #29522) (#29540)
* refactor!: dynamically compute bom_level

(cherry picked from commit 157b4b33fe)

# Conflicts:
#	erpnext/manufacturing/doctype/bom/bom.py
#	erpnext/patches.txt

* fix(ux): sort multi-production item plans correctly

(cherry picked from commit d38fd8635c)

* fix: conflicts

* fix: removed set_bom_level

* fix: conflict

Co-authored-by: Ankush Menat <ankush@frappe.io>
Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2022-01-31 17:11:43 +05:30
Ankush Menat
2bc42759d2 Merge pull request #29534 from frappe/mergify/bp/version-13-hotfix/pr-29519
fix: bin uniqueness (backport #29519)
2022-01-31 15:56:12 +05:30
mergify[bot]
9425ca07f5 chore: revert manual handling of stock level section (#29537) (#29538)
(cherry picked from commit a254201696)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2022-01-31 15:43:08 +05:30
Ankush Menat
2b868e7f56 fix: update reserved qty for production/ s/c
(cherry picked from commit 0a15334464)
2022-01-31 09:00:20 +00:00
Ankush Menat
f99f537b57 refactor: patch for fixing broken bins
fix(patch): delete fully broken bins

if bin doesn't have item_code or warehouse then it's not recoverable.

(cherry picked from commit c2ecc7a2d1)
2022-01-31 09:00:19 +00:00
Sagar Sharma
a7b30d9197 fix(patch): patch duplicate bins
(cherry picked from commit 7ff3ca25e5)
2022-01-31 09:00:18 +00:00
Ankush Menat
b3f36efa8f fix: ignore None item/wh whie updating reservation
(cherry picked from commit a1e7771cdd)
2022-01-31 09:00:17 +00:00
Ankush Menat
8aa6423093 fix: add unique constraint on bin at db level
(cherry picked from commit 08810dbcce)
2022-01-31 09:00:16 +00:00
Saqib Ansari
144c8ec904 Merge pull request #29528 from frappe/mergify/bp/version-13-hotfix/pr-29454
fix(sales order): incorrect no. of items fetched while creating dn (backport #29454)
2022-01-31 12:16:30 +05:30
Saqib Ansari
bed7201efe fix: merge conflicts 2022-01-31 11:40:59 +05:30
Saqib Ansari
e6f2343fb4 chore: add comment
(cherry picked from commit 0b9a850a17)
2022-01-31 06:09:26 +00:00
Saqib Ansari
9da63f2e79 fix(sales order): incorrect no. of items fetched while creating dn
(cherry picked from commit a73ad6759d)

# Conflicts:
#	erpnext/selling/doctype/sales_order/sales_order.js
2022-01-31 06:09:26 +00:00
Saqib Ansari
f31e52123a fix: qty filter not working if apply_multiple_pricing_rules is enabled 2022-01-31 11:37:33 +05:30
Deepesh Garg
2c83f18864 Merge pull request #29518 from frappe/mergify/bp/version-13-hotfix/pr-29499
fix(India): Tax calculation for overseas suppliers (backport #29499)
2022-01-31 11:06:51 +05:30
mergify[bot]
0fb4e81a30 fix: cost of poor quality report time filters not working (#28958) (#29521)
* fix: cost of poor quality report time filters not working

* chore:update cost of poor quality report to use query builder

* fix: linter warnings

* chore: updated report query

* chore: added test filters

* fix : cleared linter warnings

* chore: formatting

* refactor: query generation

- optionally apply date filters
- join instead of expensive sub-query
- return as dictionary

* test: simplify test

Co-authored-by: Ankush Menat <ankush@frappe.io>
(cherry picked from commit 0f7c2a19de)

Co-authored-by: aaronmenezes <ron2805@gmail.com>
2022-01-30 20:49:41 +05:30
Deepesh Garg
dc82becbd2 fix(India) Tax calculation for overseas suppliers
(cherry picked from commit e45c38337c)
2022-01-30 07:44:43 +00:00
Ankush Menat
70dc77305b fix: work order serial no allows storing whitespace
(cherry picked from commit 43bd88e741)
2022-01-29 14:27:09 +05:30
Ankush Menat
db3eef9a8b fix: extend sr_no cleanup to packed items too
(cherry picked from commit e177c5277f)
2022-01-29 14:27:09 +05:30
Ankush Menat
cc08125f39 refactor: reusable clean_serial_nos
(cherry picked from commit b20df3745e)
2022-01-29 14:27:09 +05:30
Ankush Menat
997ddbea78 fix: ignore alternate item while checking pending qty
(cherry picked from commit 14e3e163ae)
2022-01-29 14:02:10 +05:30
Deepesh Garg
ebe9599dda Merge pull request #29428 from deepeshgarg007/shipping_rule_apply
fix: Add shipping charges to taxes only if applicable
2022-01-29 12:56:49 +05:30
Saqib Ansari
8535ad5294 chore: undo unnecessary changes
(cherry picked from commit 3da2cac772)
2022-01-29 07:14:23 +00:00
Saqib Ansari
eeb2402764 chore: rename redefinition of multiple pricing rule test
(cherry picked from commit 5a7a9a598b)
2022-01-29 07:14:22 +00:00
Saqib Ansari
e7e0359e3e test: add test_multiple_pricing_rules
(cherry picked from commit c0d1f4869f)
2022-01-29 07:14:22 +00:00
Saqib Ansari
c24724ac7a fix: qty filter not working if apply_multiple_pricing_rules is enabled
(cherry picked from commit 1e17d6a607)
2022-01-29 07:14:22 +00:00
Deepesh Garg
5f9fdba49e Merge branch 'version-13-hotfix' into shipping_rule_apply 2022-01-29 12:41:14 +05:30
Ankush Menat
5dd443eeb0 test: delete data after running test
[skip ci]
2022-01-28 13:52:20 +05:30
Ankush Menat
de01f0f364 fix(patch): update BOMs to have correct transfer_material_against
(cherry picked from commit e4c220053f)
2022-01-28 13:52:20 +05:30
Ankush Menat
4e14d28564 fix: ensure correct-ish transfer against
(cherry picked from commit 86efa0dbfd)
2022-01-28 13:52:20 +05:30
Ankush Menat
03bd68654b chore: disable annoying flake8 formatting for QB (#29488)
[skip ci]

(cherry picked from commit 251576a6bb)
2022-01-28 13:50:02 +05:30
mergify[bot]
67689e7374 fix: stock ledger rendering glitch (#29482)
undefined Issue

(cherry picked from commit f380042195)

Co-authored-by: smehata <53169014+smehata@users.noreply.github.com>
(cherry picked from commit 0dafa8a12a)

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2022-01-27 20:24:51 +05:30
Suraj Shetty
4e4855fed7 Merge pull request #29473 from frappe/mergify/bp/version-13-hotfix/pr-29471 2022-01-27 11:27:29 +05:30
Suraj Shetty
352c585ef5 fix: Further sort sales_order_analysis to get consistent response
Since the data was sorted by `transaction_date`, report sorting order used to be inconsistent everytime if there were lots of records with same transaction date. This used to create problems while exporting report as "Excel" with filters.

(cherry picked from commit 29c7947db0)
2022-01-27 05:46:44 +00:00
Akash Krishna
d2b61bbe8a fix(healthcare): populate current practitioner in appointment availability popup (#29405)
* fix: Remove two-way patient fetch from inpatient_record (Lab Test, Vital Signs, Sample Collection)

* fix: Patient Appointment - practitioner field gettng cleared on Check Availability dialog, added Practitioner name in the dialog

* fix: Patient Appointment - set practitioner in check availability dialog load

Co-authored-by: Chillar Anand <chillar@avilpage.com>
2022-01-26 14:13:40 +05:30
mergify[bot]
58fd7044b5 fix: remove all stock UOM conversion when changing stock UOM (#29463)
(cherry picked from commit eb8d08b411)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2022-01-26 12:28:26 +05:30
Rucha Mahabal
177a209f50 fix(Employee): set user image and validate user id only if user data is found (#29452) 2022-01-25 16:49:53 +05:30
Saurabh
034773a670 fix: broken patches (#29067)
* chore: patch fixes

* fix: remove desktop icons while deleting sales reports

* refactor: dont ignore dangerous exceptions in patches

* fix: make patch kinda idempotent

with previous query rerunning would've caused all values to become 0.

* fix: check type before patching

Co-authored-by: Ankush Menat <ankush@frappe.io>
2022-01-25 11:12:25 +05:30
mergify[bot]
63ccddfcc9 fix: fetch "transfer material against" from BOM (#29435) (#29436)
(cherry picked from commit b8fbfed096)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2022-01-24 22:10:28 +05:30
Deepesh Garg
ecba064161 Merge pull request #29404 from deepeshgarg007/doc_currency_override
fix: Previous document currency getting overridden
2022-01-24 20:49:09 +05:30
mergify[bot]
895dd68691 fix: honour 'include holidays' setting while marking attendance for leave application (backport #29425) (#29432)
Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2022-01-24 19:21:58 +05:30
mergify[bot]
d361e23a59 test: clear singles cache for changed settings (#29430) (#29431)
(cherry picked from commit 3d3f0139fd)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2022-01-24 18:46:20 +05:30
Deepesh Garg
e8bc4f12a7 fix:Add shipping charges to taxes only if applicable 2022-01-24 16:16:27 +05:30
rohitwaghchaure
aba8788ea2 Merge pull request #29422 from frappe/mergify/bp/version-13-hotfix/pr-29419
fix: incorrect raw materials quantity in manufacture stock entry (backport #29419)
2022-01-24 15:32:38 +05:30
rohitwaghchaure
3dfe7faf70 fix: issue of CI 2022-01-24 13:11:13 +05:30
Deepesh Garg
f7593f599e Merge pull request #29424 from frappe/mergify/bp/version-13-hotfix/pr-29360
test: unit test for deferred item with zero months (backport #29360)
2022-01-24 13:01:49 +05:30
Deepesh Garg
51518cf978 Merge pull request #29423 from frappe/mergify/bp/version-13-hotfix/pr-29407
fix: opening invoice creation tool can fetch multiple accounting dimension (backport #29407)
2022-01-24 13:01:11 +05:30
Deepesh Garg
f6ee0c70e2 Merge branch 'version-13-hotfix' into doc_currency_override 2022-01-24 12:48:53 +05:30
ruthra
abd8291012 test: unit test for deferred items with zero months
(cherry picked from commit 1e0450ed17)
2022-01-24 07:12:37 +00:00
ruthra
37bbdc6743 refactor: a more generalized way to clear old entries for test cases
(cherry picked from commit ed0f9cc063)
2022-01-24 07:12:36 +00:00
ruthra
24011bc6a4 refactor: fix failing test cases
(cherry picked from commit f122a47d0d)
2022-01-24 07:07:04 +00:00
ruthra
1273221477 fix: linter issue
(cherry picked from commit 80ea163953)
2022-01-24 07:07:04 +00:00
ruthra
b96fa03228 test: validating custom accouting dimension in opening invoice tool
- create new dimension 'department'
 - assign and validate department in opening invoices

(cherry picked from commit 88463dc494)
2022-01-24 07:07:03 +00:00
ruthra
bbd777a9cb fix: opening invoice creation tool not taking in accouting dimension
(cherry picked from commit e2267cdba8)
2022-01-24 07:07:03 +00:00
rohitwaghchaure
384c6234d5 fix: conflicts 2022-01-24 12:16:19 +05:30
Rohit Waghchaure
540690252f fix: incorrect raw materials quantity in manufacture stock entry
(cherry picked from commit f8d232ac26)

# Conflicts:
#	erpnext/manufacturing/doctype/work_order/test_work_order.py
2022-01-24 06:44:46 +00:00
rohitwaghchaure
43a21f2836 Merge pull request #29337 from anupamvs/crm-contact-duplication-v13
fix: contact duplication on converting lead to customer
2022-01-24 10:16:23 +05:30
mergify[bot]
2fbaba40b5 fix: bypass_credit_limit_check in credit balance report (#29401) 2022-01-23 18:17:30 +05:30
Britlog
096e7b9ec5 fix: Don't delete barcode while saving Item (#29411) 2022-01-23 16:56:09 +05:30
Rohit Waghchaure
5c8fc3890f Merge branch 'version-13-pre-release' into version-13 2022-01-23 14:57:36 +05:30
Rohit Waghchaure
f44d90e097 bumped to version 13.19.0 2022-01-23 15:17:36 +05:50
rohitwaghchaure
4305d58273 Merge pull request #29415 from rohitwaghchaure/change-log-for-v13-19
chore: change log for v13.19.0
2022-01-23 14:55:32 +05:30
Rohit Waghchaure
194b7fbf2f chore: change log for v13.19.0 2022-01-23 14:50:49 +05:30
Marica
f9de807b25 Merge pull request #29400 from marination/minor-quotation-doc-wrong-var-pre-release
fix: Wrong variable name breaks Cart Items rendering
2022-01-21 19:45:49 +05:30
marination
5ed4b43b73 debug: CI 2022-01-21 19:21:38 +05:30
Marica
315d542c2a Merge pull request #29398 from marination/minor-quotation-doc-wrong-var
fix: Wrong variable name breaks Cart Items rendering
2022-01-21 19:20:29 +05:30
marination
bfbcde7595 debug: CI 2022-01-21 19:02:47 +05:30
Deepesh Garg
ef782fd35b fix: Previous document currency getting overriden 2022-01-21 18:00:35 +05:30
Ankush Menat
1538076ae4 fix(patch): skip patch if column doesn't exist 2022-01-21 16:11:32 +05:30
Ankush Menat
f60ea20145 test: create and cancel sr no with stock reco
(cherry picked from commit 4fa93e246e)
2022-01-21 16:11:32 +05:30
Ankush Menat
91887f215d fix(patch): update stock reconciliation current serial nos
When current serial nos are non-existing there shouldn't be any value in
current_serial_no field.

(cherry picked from commit 203f0086f8)
2022-01-21 16:11:32 +05:30
Ankush Menat
0e413ef54e fix: bad default for non-existing serial nos
serial_no field should have empty string if it doesn't have any serial
nos

(cherry picked from commit 33c4a0b5a9)
2022-01-21 16:11:32 +05:30
Ankush Menat
f336b5d586 perf: single query to update serial nos
(cherry picked from commit ea5efd0791)
2022-01-21 16:11:32 +05:30
marination
b27fe43920 fix: Wrong variable name breaks Cart Items rendering 2022-01-21 16:04:48 +05:30
marination
2be15bd8e0 fix: Wrong variable name breaks Cart Items rendering 2022-01-21 15:58:29 +05:30
Marica
398fa6eb48 Merge pull request #29396 from frappe/mergify/bp/version-13-pre-release/pr-29383
fix: Cart & Popup Logic of Item variant without Website Item (backport #29383)
2022-01-21 15:35:16 +05:30
mergify[bot]
d9f783f38e fix: update status on visit cancel (#29389) (#29394)
* fix: update status on cancelling visit

* test: updated test for cancelling visits

(cherry picked from commit 11c9a5a79f)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2022-01-21 15:22:56 +05:30
mergify[bot]
0da75d745e fix: update status on visit cancel (#29389) (#29395)
* fix: update status on cancelling visit

* test: updated test for cancelling visits

(cherry picked from commit 11c9a5a79f)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2022-01-21 15:18:15 +05:30
marination
522031fd73 fix: (test) set user for price test
(cherry picked from commit 2185016f71)
2022-01-21 09:46:15 +00:00
marination
927efffcb7 fix: Sider and Linter
(cherry picked from commit 33b5e1d7e6)
2022-01-21 09:46:15 +00:00
marination
454ae7e0ed tests: Variant without web item price fetch and add to cart
- Also, optionally get image from template web item for cart if variant has no image

(cherry picked from commit c1dd3d7d9e)
2022-01-21 09:46:14 +00:00
marination
c81cf33dce fix: Cart Logic of Item variant without Website Item
(cherry picked from commit 7d130af12b)
2022-01-21 09:46:14 +00:00
Saqib Ansari
6aaa187a49 Merge pull request #29392 from frappe/mergify/bp/version-13-hotfix/pr-29385
fix: first depreciation amount in asset (backport #29385)
2022-01-21 15:15:55 +05:30
Marica
f2d8d7ab96 Merge pull request #29383 from marination/item-variant-web-logic-fix
fix: Cart & Popup Logic of Item variant without Website Item
2022-01-21 15:15:33 +05:30
mergify[bot]
fde6f13b4b fix: cannot cancel jv after migrating from v12 (#29391) 2022-01-21 15:15:11 +05:30
marination
2185016f71 fix: (test) set user for price test 2022-01-21 14:55:43 +05:30
marination
33b5e1d7e6 fix: Sider and Linter 2022-01-21 14:49:10 +05:30
Saqib Ansari
4fec250cbf fix: merge conflicts 2022-01-21 14:33:59 +05:30
marination
c1dd3d7d9e tests: Variant without web item price fetch and add to cart
- Also, optionally get image from template web item for cart if variant has no image
2022-01-21 14:33:30 +05:30
Saqib Ansari
8e2b96e814 fix: failing test cases
(cherry picked from commit ae580d116c)

# Conflicts:
#	erpnext/assets/doctype/asset/test_asset.py
2022-01-21 08:56:40 +00:00
Saqib Ansari
398fab4786 fix: depreciation amount on selling an asset
(cherry picked from commit 0bbde4819b)
2022-01-21 08:56:40 +00:00
Saqib Ansari
844b73efcd fix: first depreciation amount in asset
(cherry picked from commit 60bfead773)
2022-01-21 08:56:39 +00:00
mergify[bot]
9869b31b31 fix(Timesheets): calculate to time (backport #28589) (#29390)
Co-authored-by: Ankush Menat <ankushmenat@gmail.com>
Co-authored-by: barredterra <14891507+barredterra@users.noreply.github.com>
Co-authored-by: Himanshu <himanshuwarekar@yahoo.com>
2022-01-21 13:51:49 +05:30
Saqib Ansari
04e3fb85e5 Merge pull request #28851 from frappe/mergify/bp/version-13-hotfix/pr-28507
fix: Clear Depreciation Schedule before modification (backport #28507)
2022-01-21 12:34:05 +05:30
Marica
1f099bcdfb Merge pull request #29077 from dj12djdjs/fix-ecommerce-cart-badge
fix(e-commerce)(UX): shopping cart qty badge
2022-01-21 12:28:28 +05:30
mergify[bot]
ceba7f2fe4 fix: updated packed_items getting fetched on Sales Return / Credit Note (#28607) (#29387)
* fix: updated packed_items getting fetched on sales return

* fix: updated test cases for product bundle returns

* fix: moved calculate_mapped_packed_items_return to stock.utils

* fix: updated packed_items getting fetched on Return/Credit Note

* refactor: change var name to avoid `self`

* fix: check item code before assigning parent item

(cherry picked from commit 20216fa9f1)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
Co-authored-by: Ankush Menat <ankush@frappe.io>
2022-01-21 12:11:58 +05:30
Chillar Anand
696fc0a482 refactor: Added deprecation warning for hospitality domain (#29384) 2022-01-21 11:36:40 +05:30
marination
7d130af12b fix: Cart Logic of Item variant without Website Item 2022-01-20 19:34:36 +05:30
Anupam Kumar
29241070c1 Merge branch 'version-13-hotfix' into crm-contact-duplication-v13 2022-01-20 17:30:21 +05:30
Ankush Menat
d32f229483 ci: fail on merge conflict label 2022-01-20 15:39:32 +05:30
Ankush Menat
8a9a13cb96 ci: concurrency control on v13 branches 2022-01-20 15:39:32 +05:30
Ankush Menat
d190ea4ad3 ci: disable coverage on v13 branch 2022-01-20 15:39:32 +05:30
Marica
eb44b16e31 Merge pull request #29378 from frappe/mergify/bp/version-13-hotfix/pr-29375
fix: (enhance) BOM Operations Report (backport #29375)
2022-01-20 15:34:20 +05:30
mergify[bot]
b9a42807f8 fix: show stock UOM for material transfers (#29376) (#29377)
(cherry picked from commit 7e407bcc42)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2022-01-20 15:06:11 +05:30
marination
655d8980dc fix: Allow only BOM with ops in BOM ID filter & add total row to report
(cherry picked from commit af734298c8)
2022-01-20 09:25:05 +00:00
marination
e963d0e8e0 fix: Sider (unused imports) and Linter(add extra empty line)
(cherry picked from commit 3c7b772112)
2022-01-20 09:25:05 +00:00
marination
77cb7ebd40 fix: (enhance) BOM Operations Report
- Added filters in the Report for BOM ID, Item Code and Workstation
- Converted Raw SQL to frappe.qb and added method to get filtered data
- Changed fieldtype of 'Time in mins' from Int to Float
- Get BOM wise grouped data to  keep order and accurate grouping in report

(cherry picked from commit a9ff1fc52e)
2022-01-20 09:25:04 +00:00
Deepesh Garg
84803f8f21 Merge pull request #29370 from frappe/mergify/bp/version-13-pre-release/pr-29366
fix: Cleanup empty rows on bank statement import (backport #29366)
2022-01-20 12:14:51 +05:30
Deepesh Garg
6a53cfea00 fix: Cleanup empty rows on bank statement import
(cherry picked from commit 25398d017b)
2022-01-20 05:56:08 +00:00
Deepesh Garg
829ea71ae1 Merge pull request #29366 from deepeshgarg007/bank_statement_import_template
fix: Cleanup empty rows on bank statement import
2022-01-20 11:24:48 +05:30
Deepesh Garg
25398d017b fix: Cleanup empty rows on bank statement import 2022-01-20 10:51:59 +05:30
mergify[bot]
f75d36dcb4 fix: from time and to time not updated in drag and drop action #29114 (#29361)
fix: from time and to time not updated in drag and drop action
(cherry picked from commit 8b5827ed6d)

Co-authored-by: Mohammed Yusuf Shaikh <49878143+mohammedyusufshaikh@users.noreply.github.com>
2022-01-19 19:30:21 +05:30
Marica
56dd25355d Merge pull request #29357 from frappe/mergify/bp/version-13-pre-release/pr-29352
refactor: update_serial_no function for old Maintenance Visits (backport #28843) (backport #29352)
2022-01-19 16:40:44 +05:30
marination
fa7f5d745e fix: Patch (reload doc)
(cherry picked from commit 93d665b38a)
2022-01-19 09:19:06 +00:00
marination
dd81d622dd fix: Conflicts
(cherry picked from commit 3023757a60)
2022-01-19 09:19:06 +00:00
Noah Jacob
4086f4f8d1 fix: Serial No. filters for unscheduled visits
(cherry picked from commit dec7513773)
(cherry picked from commit add36363ab)
2022-01-19 09:19:05 +00:00
Noah Jacob
311b2dd1a9 refactor: moved purpose table mandatory check to server
(cherry picked from commit b98c61f2a7)

# Conflicts:
#	erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js
(cherry picked from commit 93325c72f0)
2022-01-19 09:19:05 +00:00
Noah Jacob
0783b36ba0 fix(test): fixed test case not creating serials
(cherry picked from commit 90d32006f4)
(cherry picked from commit 0bb0a9d032)
2022-01-19 09:19:04 +00:00
Noah Jacob
f491cc92cd test: added test for serial no. filters
(cherry picked from commit 9109660a69)
(cherry picked from commit f541b5c780)
2022-01-19 09:19:04 +00:00
Noah Jacob
824eef9354 fix(patch): updates maintenance schedule field for old docs
(cherry picked from commit c872aa43f8)

# Conflicts:
#	erpnext/patches.txt
(cherry picked from commit dc0d974144)
2022-01-19 09:19:04 +00:00
Noah Jacob
216f45ce11 refactor: update_serial_no function and code cleanup
(cherry picked from commit 4f52b86d7e)

# Conflicts:
#	erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js
(cherry picked from commit 8775154fa0)
2022-01-19 09:19:03 +00:00
Marica
6c45223606 Merge pull request #29352 from frappe/mergify/bp/version-13-hotfix/pr-28843
refactor: update_serial_no function for old Maintenance Visits (backport #28843)
2022-01-19 14:48:24 +05:30
marination
93d665b38a fix: Patch (reload doc) 2022-01-19 13:53:18 +05:30
Anupam
44d2098530 fix: changed function name 2022-01-19 13:10:23 +05:30
marination
3023757a60 fix: Conflicts 2022-01-19 13:06:52 +05:30
Noah Jacob
add36363ab fix: Serial No. filters for unscheduled visits
(cherry picked from commit dec7513773)
2022-01-19 07:19:51 +00:00
Noah Jacob
93325c72f0 refactor: moved purpose table mandatory check to server
(cherry picked from commit b98c61f2a7)

# Conflicts:
#	erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js
2022-01-19 07:19:50 +00:00
Noah Jacob
0bb0a9d032 fix(test): fixed test case not creating serials
(cherry picked from commit 90d32006f4)
2022-01-19 07:19:49 +00:00
Noah Jacob
f541b5c780 test: added test for serial no. filters
(cherry picked from commit 9109660a69)
2022-01-19 07:19:49 +00:00
Noah Jacob
dc0d974144 fix(patch): updates maintenance schedule field for old docs
(cherry picked from commit c872aa43f8)

# Conflicts:
#	erpnext/patches.txt
2022-01-19 07:19:48 +00:00
Noah Jacob
8775154fa0 refactor: update_serial_no function and code cleanup
(cherry picked from commit 4f52b86d7e)

# Conflicts:
#	erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js
2022-01-19 07:19:47 +00:00
Anupam Kumar
b917f33399 Merge branch 'version-13-hotfix' into crm-contact-duplication-v13 2022-01-18 16:38:04 +05:30
Anupam
79ce36c19f fix: sider issue 2022-01-18 16:36:40 +05:30
Anupam
c8eae9dcef fix: contact duplication on converting lead to customer 2022-01-18 16:14:45 +05:30
mergify[bot]
69fded250c fix: enable allow negative stock by default in reposts (#29331) (#29333)
Negative stock validation is done BEFORE reposting as such it's not
required to be performed again and most likely this fails on old
intermediate data where user has no clue why it failed.

(cherry picked from commit fabe0bce15)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2022-01-18 13:33:29 +05:30
mergify[bot]
3064d95889 refactor: convert CTE validation to python (#29324) (#29332)
Some old servers running on mariadb <10.2 can't work with CTEs hence
reverting to basic python code

Co-authored-by: Ankush Menat <ankush@frappe.io>
(cherry picked from commit d7f16c4924)

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2022-01-18 11:48:01 +05:30
mergify[bot]
d7f16c4924 refactor: convert CTE validation to python (#29324)
Some old servers running on mariadb <10.2 can't work with CTEs hence
reverting to basic python code

Co-authored-by: Ankush Menat <ankush@frappe.io>
2022-01-18 11:17:32 +05:30
rohitwaghchaure
ac2d1a9acc Merge pull request #29329 from rohitwaghchaure/merge-hotfix-to-pre-release-for-13-19
chore: Merge branch 'version-13-hotfix' into 'version-13-pre-release'
2022-01-18 00:23:29 +05:30
Rohit Waghchaure
8d3f8619cf chore: Merge branch 'version-13-hotfix' into 'version-13-pre-release' 2022-01-18 00:01:14 +05:30
mergify[bot]
d5d7f67ac2 fix: cover case when all material needs to be bought (#29326) (#29327)
When material request is to be made for purchase qty should be converted
to purchase UOM

(cherry picked from commit 48f3d53556)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2022-01-17 22:16:41 +05:30
mergify[bot]
5e3f5d8bcc fix: purchase to Stock UOM conversion on Production Plan #28570 (#29325)
fix: purchase to Stock UOM conversion on Production Plan
(cherry picked from commit 9cd26fbb6a)

Co-authored-by: Maxwell Morais <MaxMorais@users.noreply.github.com>
2022-01-17 22:15:12 +05:30
Devin Slauenwhite
c121ab8ef4 Merge remote-tracking branch 'upstream/version-13-hotfix' into fix-ecommerce-cart-badge 2022-01-17 09:15:14 -05:00
Ankush Menat
0b4b60a6c3 Merge pull request #29322 from frappe/mergify/bp/version-13-hotfix/pr-28987
fix: incorrect serial no valuation (backport #28987)
2022-01-17 18:02:57 +05:30
Deepesh Garg
7542dd3f15 Merge pull request #29318 from frappe/mergify/bp/version-13-hotfix/pr-29182
fix: get project from PO into payment entry (backport #29182)
2022-01-17 17:28:24 +05:30
Ankush Menat
0411bcbd5c test: serial no valuation test case
(cherry picked from commit 5d27a7672e)
2022-01-17 11:26:05 +00:00
Ankush Menat
9a3a679628 fix: get incoming rate only if not return
(cherry picked from commit fcc885bc16)
2022-01-17 11:26:04 +00:00
Ankush Menat
a3a9920771 fix: incorrect incoming rate computation for sr no
(cherry picked from commit b9642a1036)
2022-01-17 11:26:03 +00:00
mergify[bot]
c2d58ba796 feat(UX): Option to exclude holidays while marking monthly attendance (backport #29185) (#29321)
(cherry picked from commit 6aac8de53e)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2022-01-17 16:48:04 +05:30
Deepesh Garg
5da7e28d20 fix: Linting issues
(cherry picked from commit 09172002e7)
2022-01-17 09:34:58 +00:00
ruthra
7f5415177e refactor: get project from basic transactions
- sales order, sales invoice, purchase order and purchase order
- if project not found in transaction, get from items

(cherry picked from commit 8026f86548)
2022-01-17 09:34:57 +00:00
ruthra
ea9756da8f fix: get project from PO into payment entry
(cherry picked from commit ca17c7226c)
2022-01-17 09:34:57 +00:00
Ankush Menat
a0c2c94cff test: make sure zero incoming rate is maintained while consuming
(cherry picked from commit 0272397e54)
2022-01-17 13:21:48 +05:30
Ankush Menat
3b0f80b865 fix: dont update sle values from get_gl_entries
(cherry picked from commit 8f5772463c)
2022-01-17 13:21:48 +05:30
mergify[bot]
83ca2422f6 fix: show work order progress bar even it is closed (#29312) (#29313)
(cherry picked from commit 4d48035828)

Co-authored-by: Anupam Kumar <anupamvns0099@gmail.com>
2022-01-17 12:08:21 +05:30
mergify[bot]
de9a0d6a7f fix: ignore cancelled SLEs (#29303) (#29307)
(cherry picked from commit 82ea958730)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2022-01-16 21:44:07 +05:30
mergify[bot]
5db8af8cee fix(patch): sle.serial_no = "\n" causes incorrect queue (#29306) (#29309)
This happens due to old data.

(cherry picked from commit 66bf21f143)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2022-01-16 20:59:19 +05:30
mergify[bot]
42d3b0c063 fix: only add stock queue if FIFO (#29302) (#29305)
(cherry picked from commit b0cf6195e9)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2022-01-16 14:05:09 +05:30
mergify[bot]
ecbd885aad fix: exclude existing serial numbers while auto creating new #29292 (#29300)
fix: exclude existing serial numbers while auto creating new
(cherry picked from commit 2b681f04fd)

Co-authored-by: Dany Robert <danyrt@wahni.com>
2022-01-16 12:33:55 +05:30
Deepesh Garg
cfb43d159d Merge pull request #29298 from frappe/mergify/bp/version-13-hotfix/pr-29208
fix(India): NIL Rated, Exempted and non gst invoices in GSTR-1 report (backport #29208)
2022-01-15 19:18:25 +05:30
Deepesh Garg
f3ddf53d39 Merge pull request #29299 from frappe/mergify/bp/version-13-hotfix/pr-29115
fix: Deferred revenue booking for multi currency invoices via JV (backport #29115)
2022-01-15 19:18:11 +05:30
Deepesh Garg
ef3e4ee61f fix: Remove unwanted test
(cherry picked from commit fd922f1617)
2022-01-15 13:26:21 +00:00
Deepesh Garg
045a505a38 fix: Remove comment
(cherry picked from commit 08f26de3df)
2022-01-15 13:26:21 +00:00
Deepesh Garg
eff48299e4 fix: Test case
(cherry picked from commit 24bb1e8987)
2022-01-15 13:26:21 +00:00
Deepesh Garg
8ed138e373 fix: Test case
(cherry picked from commit 18c4ddadf1)
2022-01-15 13:26:20 +00:00
Deepesh Garg
a4e897d30b fix: Handle frozen books while handling
(cherry picked from commit 30a647ff80)
2022-01-15 13:26:20 +00:00
Deepesh Garg
38a330b55e fix: Test case
(cherry picked from commit e311667a25)
2022-01-15 13:26:19 +00:00
Deepesh Garg
a08b10d5cf fix: Add test case for multicurrency invoice
(cherry picked from commit 094158f287)
2022-01-15 13:26:19 +00:00
Deepesh Garg
eb3d28fcc0 fix: Deferred revenue booking for multi currency invoices via JV
(cherry picked from commit 98f294a8ae)
2022-01-15 13:26:19 +00:00
Deepesh Garg
103bf19700 fix: JSON for nil/exempt and non gst
(cherry picked from commit 55c445cd37)
2022-01-15 13:24:14 +00:00
Deepesh Garg
835448c9e5 fix(India): NIL Rated, Exempted and non gst invoices in GSTR-1 report
(cherry picked from commit 7d85755595)
2022-01-15 13:24:14 +00:00
mergify[bot]
94a30674df fix: threshold fields shows incorrect currency (#29289) 2022-01-14 15:29:46 +05:30
Deepesh Garg
2524be6386 Merge pull request #29281 from frappe/mergify/bp/version-13-hotfix/pr-29280
fix: accounts are coming from different company in the dropdown (backport #29280)
2022-01-13 22:41:26 +05:30
Rohit Waghchaure
e28b046cf9 fix: accounts are coming from different company in the dropdown
(cherry picked from commit dabe5981bb)
2022-01-13 15:42:50 +00:00
Marica
f1c08f9b8c Merge pull request #29274 from frappe/mergify/bp/version-13-hotfix/pr-29271
fix: Don't validate FG in repack entry (backport #29271)
2022-01-13 16:50:02 +05:30
marination
80b037ed13 test: Check for FinishedGoodError if 0 FG in repack entry
(cherry picked from commit c49dff385a)
2022-01-13 09:57:50 +00:00
marination
61681e73ef test: Basic test one item repacked into two
- Also run fg validation and fg marking after checking purpose, avoid unnecessary calls

(cherry picked from commit 3922a39591)
2022-01-13 09:57:50 +00:00
marination
a868fd7df9 fix: Allow multiple fg in repack entry
(cherry picked from commit eac7b5d5aa)
2022-01-13 09:57:50 +00:00
mergify[bot]
21c194495c fix: filter for leave period in Bulk Leave Policy Assignment (backport #29272) (#29273)
* fix: filter for leave period in Bulk Leave Policy Assignment

* fix: set title for Leave Policy Assignment

(cherry picked from commit 3a18e62a9b)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2022-01-13 14:28:56 +05:30
Deepesh Garg
884edb45b3 Merge pull request #29240 from frappe/mergify/bp/version-13-hotfix/pr-29193
fix: deferred report division by zero exception (backport #29193)
2022-01-13 12:56:27 +05:30
Devin Slauenwhite
81f1b7dfeb fix(Payroll): Cannot submit salary slips from amended payroll entry. (#29228)
* fix: salary slip transaction state after payroll entry cancel

* fix: use db_set in on_cancel method

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2022-01-13 10:29:52 +05:30
mergify[bot]
dcea4f4c96 fix: autoname generated for Job Applicant is too long (backport #29260) (#29263)
* fix: autoname generated for Job Applicant is too long (#29260)

* fix: autoname generated for Job Applicant is too long

- autoname based on email and append number if exists instead of concatenating name, email, title

- add more search fields for context during selection

* test: Job applicant naming and fix related tests

(cherry picked from commit 5cda4ea39f)

# Conflicts:
#	erpnext/hr/doctype/employee_onboarding/test_employee_onboarding.py

* fix: conflicts

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2022-01-12 19:54:59 +05:30
Marica
a4210a7c85 Merge pull request #29257 from marination/fix-reset-wh-defaults (#29259)
fix: Avoid resetting Default wh fields for Manufacture Entry
(cherry picked from commit efcfb825d7)

Co-authored-by: Marica <maricadsouza221197@gmail.com>
2022-01-12 17:09:13 +05:30
Marica
d01e794558 Merge pull request #29257 from marination/fix-reset-wh-defaults
fix: Avoid resetting Default wh fields for Manufacture Entry
(cherry picked from commit efcfb825d7)
2022-01-12 11:15:35 +00:00
Ganga Manoj
852543cbcd fix: Merge conflicts 2022-01-12 14:05:09 +05:30
rohitwaghchaure
464f813677 Merge pull request #29255 from frappe/mergify/bp/version-13-hotfix/pr-29179
fix: incorrect scrap item qty (backport #29179)
2022-01-12 14:00:36 +05:30
mergify[bot]
366f663c5a fix(asset): check if fixed asset account is set against company (#29256) 2022-01-12 13:45:37 +05:30
rohitwaghchaure
b4fee6d065 fix: conflicts 2022-01-12 13:31:34 +05:30
mergify[bot]
f4a031d94b fix: description not fetched in sales order analytics report (#29254) 2022-01-12 13:31:07 +05:30
rohitwaghchaure
fa66d1d87d fix: conflicts 2022-01-12 13:30:05 +05:30
Rohit Waghchaure
d71d769c7a fix: incorrect scrap item qty
(cherry picked from commit 8f0b2fa90e)

# Conflicts:
#	erpnext/manufacturing/doctype/work_order/test_work_order.py
2022-01-12 07:44:38 +00:00
Marica
e05ad8ed10 Merge pull request #29219 from marination/item-variant-config-backend-cleanup
fix: Behaviour of Item Variants Cache generation
2022-01-12 02:12:03 +05:30
Marica
f8761dc5ca Merge branch 'version-13-hotfix' into item-variant-config-backend-cleanup 2022-01-12 01:52:55 +05:30
marination
a0bd82e99f fix: Server Side test - teardown correctly 2022-01-11 22:43:39 +05:30
mergify[bot]
00ad0dd24d feat: early payment discount on sales & purchase orders (#29238) 2022-01-11 21:11:42 +05:30
Marica
c773051a3e Merge branch 'version-13-hotfix' into item-variant-config-backend-cleanup 2022-01-11 20:16:41 +05:30
marination
746bb6277f test: Variant Selector - Fetch next valid Attribute values fetching after selection of one 2022-01-11 20:15:24 +05:30
Ankush Menat
d9f31770c6 fix(patch): enable all uoms on recently created sites
(cherry picked from commit f8119563ca)
2022-01-11 18:56:50 +05:30
Ankush Menat
c1fbd2308c fix: UOM autocomplete broken
All new recent sites seem to have all UOMs as disabled by default. The
desired behaviour is exact opposite of this.

(cherry picked from commit 33aad4b950)
2022-01-11 18:56:50 +05:30
marination
577de39ca6 test: Variant Selector - Attribute Value fetching 2022-01-11 18:19:29 +05:30
ruthra
de9429b585 fix: deferred report division by zero exception
(cherry picked from commit fe4d7f86ee)
2022-01-11 11:50:18 +00:00
mergify[bot]
819346f69f fix: "update cost" should ignore overridden routing times #29154 (#29235)
fix: "update cost" should ignore overridden routing times
(cherry picked from commit 754596dfc1)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2022-01-11 09:02:57 +00:00
mergify[bot]
8bb72dece4 fix(pos): cannot ignore pricing rule for one particular invoice (#29232) 2022-01-11 14:26:39 +05:30
mergify[bot]
4343eddd46 fix(gl-report): group by cost center only if include_dimensions is checked (#28883) (#29231) 2022-01-11 13:24:21 +05:30
Ankush Menat
f35ef60262 Merge pull request #29224 from frappe/mergify/bp/version-13-hotfix/pr-29131
fix(patch): serial no whitespace trimming (backport #29131)
2022-01-10 22:33:15 +05:30
Ankush Menat
d0c7d4fc98 refactor: convert query to ORM
(cherry picked from commit cbaa8fdade)
2022-01-10 14:22:46 +00:00
Ankush Menat
fbe0442e89 fix(patch): serial no whitespace trimming
old data can contain trailing/leading whitespace which doesn't work well
with code to find last SLE for serial no.

(cherry picked from commit 0faa116f97)
2022-01-10 14:22:45 +00:00
mergify[bot]
055d620ef3 fix: pos invoices consolidation case with permlevel (#29220) 2022-01-10 19:48:28 +05:30
Marica
495c5126f8 fix: Exclude unpublished items while fetching items from other item groups (#29211) 2022-01-10 19:47:50 +05:30
marination
23f4b51e3e fix: Behaviour if Item Variants Cache generation
- Revert to old behaviour where variant doesnt need to be published
- Delete unused functions
2022-01-10 18:04:03 +05:30
marination
0174aa238c fix: Exclude unpublished items while fetching items from other item groups 2022-01-10 13:38:54 +05:30
mergify[bot]
ac4e996928 fix: Task Depends on not removed from Gantt chart (backport #28309) (#29207)
Co-authored-by: conncampbell <conncampbell@conzu.ca>
(cherry picked from commit 31123436fb)

Co-authored-by: Conn Campbell <conn.campbell@conzu.ca>
2022-01-10 10:49:29 +05:30
Deepesh Garg
d85aef5b2a Merge pull request #29188 from frappe/mergify/bp/version-13-hotfix/pr-29176
fix: Inconsistency in calculating outstanding amount (backport #29176)
2022-01-07 20:21:02 +05:30
mergify[bot]
822a8ba47a chore: remove framework patch for custom fields (#29117) (#29195)
* chore: patches were breaking during migration

* fix: rewrote the query in query builder

* chore: removed patch from patches.txt

(cherry picked from commit 25c875e447)

Co-authored-by: Shadrak Gurupnor <30501401+shadrak98@users.noreply.github.com>
2022-01-07 19:04:19 +05:30
Deepesh Garg
14aca20b00 Merge pull request #29194 from frappe/mergify/bp/version-13-hotfix/pr-28994
fix: cannot create debit note with zero qty (backport #28994)
2022-01-07 19:03:56 +05:30
Saqib Ansari
ecf341d1b1 fix: cannot save debit note with zero quantity
(cherry picked from commit 2be5104848)
2022-01-07 13:06:01 +00:00
Saqib Ansari
4ef9d289e8 fix(sales-invoice): cannot create debit note with zero qty
(cherry picked from commit 04ea42ce52)
2022-01-07 13:06:00 +00:00
Deepesh Garg
9b6c2fdfb7 fix: Conflicts 2022-01-07 15:03:55 +05:30
Deepesh Garg
203943ef97 Merge pull request #29186 from frappe/mergify/bp/version-13-hotfix/pr-29169
fix: GL Entries for loan repayment via Salary (backport #29169)
2022-01-07 15:02:19 +05:30
Deepesh Garg
b561c18502 fix: Inconsistency in calculating outstanding amount
(cherry picked from commit 9d3a5c3184)

# Conflicts:
#	erpnext/public/js/controllers/taxes_and_totals.js
2022-01-07 07:59:28 +00:00
Deepesh Garg
a333635ab6 Merge pull request #29135 from deepeshgarg007/gl_balance_ar_ap
fix: Show GL balance in Accounts Receivable and Payable summary
2022-01-07 12:59:17 +05:30
Deepesh Garg
892e63575e fix: GL Entries for loan repayment via Salary
(cherry picked from commit f316aaf41e)
2022-01-07 07:25:10 +00:00
Syed Mujeer Hashmi
60ddf39e37 chore: Remove the extra 's' in patient age string (#29180) 2022-01-07 09:22:36 +05:30
Rohit Waghchaure
dfe2140f70 Merge branch 'version-13-pre-release' into version-13 2022-01-06 23:59:30 +05:30
Rohit Waghchaure
c4dab3eef3 bumped to version 13.18.0 2022-01-07 00:19:30 +05:50
rohitwaghchaure
e967aafc28 Merge pull request #29178 from rohitwaghchaure/change-log-for-v13-18
chore: change log for v13.18.0
2022-01-06 23:58:02 +05:30
Rohit Waghchaure
0e925c6ea2 chore: change log for v13.18.0 2022-01-06 23:56:24 +05:30
mergify[bot]
49c33a67e1 fix: incorrect serial no valuation report showing cancelled entries (#29172) (#29174)
(cherry picked from commit 24fc487dd8)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2022-01-06 17:07:05 +05:30
mergify[bot]
7abe7c752b fix: incorrect serial no valuation report showing cancelled entries (#29172) (#29173)
(cherry picked from commit 24fc487dd8)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2022-01-06 17:05:00 +05:30
Deepesh Garg
d243291e1c Merge pull request #29155 from deepeshgarg007/ksa_vat_currency
fix: Currency in KSA VAT report
2022-01-06 16:22:40 +05:30
Deepesh Garg
493af62038 Merge pull request #29170 from frappe/mergify/bp/version-13-hotfix/pr-29125
fix: cannot create reverse journal entry (backport #29125)
2022-01-06 14:11:46 +05:30
Saqib Ansari
b82d4b7577 fix: cannot create reverse journal entry
(cherry picked from commit 3aa1817f7b)
2022-01-06 08:01:51 +00:00
mergify[bot]
2f98aa121a fix: Earned Leave allocation from Leave Policy Assignment (backport #29163) (#29166)
Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2022-01-06 11:46:37 +05:30
mergify[bot]
37d2f6fd15 fix: Earned Leave allocation from Leave Policy Assignment (backport #29163) (#29165)
* fix: Earned Leave allocation from Leave Policy Assignment

* test: Earned Leave Allocation from Leave Policy Assignment

(cherry picked from commit 26247be3b8)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2022-01-06 11:44:58 +05:30
mergify[bot]
6cc3c612ee feat: 'Invoice Number' field in Opening Invoice Creation Tool (#29156) 2022-01-05 16:00:00 +05:30
Deepesh Garg
1d87e9d8f6 fix: Currency in KSA VAT report 2022-01-05 15:08:29 +05:30
Chillar Anand
a64efb764b refactor: Add deprecation warning for agriculture domain (#29149) 2022-01-05 11:56:32 +05:30
Subin Tom
d3820f6ce3 feat: 'Invoice Number' field in Opening Invoice Creation Tool (#29147) 2022-01-05 11:21:15 +05:30
rohitwaghchaure
2f07d38caf Merge pull request #29150 from frappe/mergify/bp/version-13-pre-release/pr-29103
fix: incorrect posting time fetching incorrect qty (backport #29103)
2022-01-05 10:36:37 +05:30
rohitwaghchaure
48f98a68b8 fix: incorrect posting time fetching incorrect qty (#29103)
(cherry picked from commit f02e6b4631)
2022-01-05 04:23:01 +00:00
mergify[bot]
485fa4700f fix(UX): validate setup on clicking Mark Attendance button in Shift Type (backport #29146) (#29148)
(cherry picked from commit ac816f4fed)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2022-01-04 21:52:42 +05:30
Deepesh Garg
f90b49a1b5 Merge pull request #29145 from frappe/mergify/bp/version-13-pre-release/pr-29142
fix: map Accounting Dimensions for Bank Entry against Payroll Entry (backport #29142)
2022-01-04 21:02:16 +05:30
Deepesh Garg
e8e93bdf43 Merge pull request #29144 from frappe/mergify/bp/version-13-hotfix/pr-29142
fix: map Accounting Dimensions for Bank Entry against Payroll Entry (backport #29142)
2022-01-04 21:01:54 +05:30
Rucha Mahabal
1eccb83904 fix: map Accounting Dimensions for Bank Entry against Payroll Entry
(cherry picked from commit 5eeb94db31)
2022-01-04 14:58:45 +00:00
Rucha Mahabal
5900968bd9 fix: map Accounting Dimensions for Bank Entry against Payroll Entry
(cherry picked from commit 5eeb94db31)
2022-01-04 14:58:07 +00:00
mergify[bot]
fa735a0539 fix: Modifying Opening invoice creation tool timestamp (#29127) (#29143) 2022-01-04 20:04:47 +05:30
mergify[bot]
b808ef1625 feat: allow user to change the parent company (#29138) 2022-01-04 19:29:39 +05:30
mergify[bot]
06c0313a26 fix: POS items added to cart despite low qty (#29141) 2022-01-04 19:20:19 +05:30
mergify[bot]
f4670a86a0 fix: minor issues (#29140) 2022-01-04 19:16:52 +05:30
Subin Tom
0b07fbd5a2 fix: Modifying Opening invoice creation tool timestamp (#29139) 2022-01-04 19:15:59 +05:30
mergify[bot]
2838dc537e fix: update idx after updating items in so/po (#29134) (#29136)
(cherry picked from commit 733c9defdf)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2022-01-04 19:05:38 +05:30
Deepesh Garg
1d270dca05 fix: Show GL balance in Accounts Receivable and payable summary 2022-01-04 17:53:08 +05:30
mergify[bot]
3898b19086 fix: future recurring period calculation (backport #29083) (#29119)
Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
Co-authored-by: Nabin Hait <nabinhait@gmail.com>
2022-01-04 12:00:42 +05:30
mergify[bot]
fe1a66cf54 fix: future recurring period calculation (backport #29083) (#29118)
Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
(cherry picked from commit 11cfa16158)

Co-authored-by: Nabin Hait <nabinhait@gmail.com>
2022-01-04 11:58:41 +05:30
Saqib Ansari
e2b2be82e0 Merge pull request #29112 from frappe/mergify/bp/version-13-hotfix/pr-28907
fix: Validation in POS for item batch no stock quantity (backport #28907)
2022-01-03 19:35:43 +05:30
Subin Tom
fe3ebafea4 fix: linters fix 2022-01-03 19:10:03 +05:30
Subin Tom
860a0f4696 fix: linters fix 2022-01-03 19:06:40 +05:30
Subin Tom
a34ded79f3 fix: importing Sum() for qb for test fix 2022-01-03 19:01:57 +05:30
Saqib Ansari
d1739eb59a Merge pull request #29113 from frappe/mergify/bp/version-13-hotfix/pr-28160
refactor: `update_invoice_status` with query builder (backport #28160)
2022-01-03 18:32:53 +05:30
Pruthvi Patel
84f3f34821 Update erpnext/controllers/accounts_controller.py
Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
(cherry picked from commit 16a90d3e60)
2022-01-03 12:30:23 +00:00
Pruthvi Patel
50628d416c test: update_invoice_status
(cherry picked from commit 4d48ca4228)
2022-01-03 12:30:23 +00:00
Pruthvi Patel
e648a2ccde fix: consider Discounted status
(cherry picked from commit 0799f378b4)
2022-01-03 12:30:23 +00:00
Pruthvi Patel
1efce21ba4 refactor: update_invoice_status with query builder
(cherry picked from commit 6c96ed4e11)
2022-01-03 12:30:22 +00:00
Subin Tom
110a1e5557 fix: using get_batch_qty method to get available_qty
(cherry picked from commit 7385497219)
2022-01-03 12:27:40 +00:00
Subin Tom
80f92ee547 fix: added Sum() in query
(cherry picked from commit 267da48889)
2022-01-03 12:27:39 +00:00
Saqib
0be144c193 chore: remove extra whitespace
(cherry picked from commit c3a9ca09d1)
2022-01-03 12:27:39 +00:00
Saqib
bf92681fff fix: typo
(cherry picked from commit 9c8f523537)
2022-01-03 12:27:38 +00:00
Subin Tom
3947d859c5 fix: replaced sql query with frappe.qb
(cherry picked from commit 68beee2a00)
2022-01-03 12:27:38 +00:00
Subin Tom
0222cd198d fix: Validation in POS for item batch no stock quantity
(cherry picked from commit 9f235526d4)
2022-01-03 12:27:37 +00:00
rohitwaghchaure
fca8f17b40 Merge pull request #29104 from frappe/mergify/bp/version-13-hotfix/pr-29103
fix: incorrect posting time fetching incorrect qty (backport #29103)
2022-01-03 14:53:39 +05:30
rohitwaghchaure
fcbcb08fcd fix: incorrect posting time fetching incorrect qty (#29103)
(cherry picked from commit f02e6b4631)
2022-01-03 08:58:56 +00:00
mergify[bot]
674a923669 feat: Add currency in import download statement (#29093) 2022-01-03 13:42:25 +05:30
mergify[bot]
8a8648e6ec fix: filter query in bank reconciliation tool (#29100) 2022-01-03 11:41:38 +05:30
mergify[bot]
4fdaf51599 fix: filter query in bank reconciliation tool (#29099) 2022-01-03 11:41:23 +05:30
Deepesh Garg
19154074c1 Merge pull request #29095 from frappe/mergify/bp/version-13-pre-release/pr-29092
fix(India): Tax and Charges template not getting fetched based on tax category assigned (backport #29092)
2022-01-02 19:30:46 +05:30
Deepesh Garg
9a32bb6b51 fix: Test Case
(cherry picked from commit 342658ea70)
2022-01-02 13:37:23 +00:00
Deepesh Garg
cf4cac05ab fix(India): Tax and Charges template not getting fetched based on tax category assigned
(cherry picked from commit 7a5937a98c)
2022-01-02 13:37:23 +00:00
Deepesh Garg
39f7a9de47 Merge pull request #29092 from deepeshgarg007/taxes_category_tax_fetch
fix(India): Tax and Charges template not getting fetched based on tax category assigned
2022-01-02 19:06:00 +05:30
Deepesh Garg
342658ea70 fix: Test Case 2022-01-02 18:39:59 +05:30
Deepesh Garg
7a5937a98c fix(India): Tax and Charges template not getting fetched based on tax category assigned 2022-01-02 17:53:15 +05:30
Devin Slauenwhite
d763b16e9f Merge remote-tracking branch 'upstream/version-13-hotfix' into fix-ecommerce-cart-badge 2021-12-31 10:41:37 -05:00
Devin Slauenwhite
2602fc633b fix(e-commerce): shopping cart total quantity (#29076)
* fix: shopping cart total quantity

* fix: linter error
2021-12-31 20:28:00 +05:30
mergify[bot]
79d126f5d0 fix: leave_allocation variable not being defined (backport #29086) (#29087)
(cherry picked from commit dbbc8d8aed)

Co-authored-by: Vaibhav Chopra <53619134+sudo-vaibhav@users.noreply.github.com>
2021-12-31 13:54:18 +05:30
Devin Slauenwhite
c9a9d0bab8 fix(ux): tripple digit cart qty 2021-12-29 21:47:04 -05:00
rohitwaghchaure
0703c1f996 Merge pull request #29073 from rohitwaghchaure/merge-hotfix-to-pre-release-for-13-18
chore: Merge branch 'version-13-hotfix' into 'version-13-pre-release'
2021-12-29 23:29:28 +05:30
Rohit Waghchaure
b378a225d0 chore: Merge branch 'version-13-hotfix' into 'version-13-pre-release' 2021-12-29 23:10:55 +05:30
rohitwaghchaure
12f5464a3b Merge pull request #29066 from frappe/mergify/bp/version-13-hotfix/pr-29064
fix: optimize patch for update bom in SO and MR (backport #29064)
2021-12-29 13:59:40 +05:30
Rohit Waghchaure
9d575e6e27 fix: optimize patch for update bom in SO and MR
(cherry picked from commit d9b9f4e8b7)
2021-12-29 06:39:14 +00:00
Deepesh Garg
098b3614e1 Merge pull request #29061 from frappe/mergify/bp/version-13-hotfix/pr-28034
fix: Updates in term loan processing (backport #28034)
2021-12-28 19:36:04 +05:30
Deepesh Garg
bbe4bc1fc0 fix: Resolve conflicts 2021-12-28 19:10:27 +05:30
Deepesh Garg
0f8a7d7a6c fix: Update modified timestamp 2021-12-28 18:53:10 +05:30
Deepesh Garg
a4396d7f31 fix: Add test for loan repayment cancellation
(cherry picked from commit 68d49817a1)
2021-12-28 13:10:38 +00:00
Deepesh Garg
4248bebe48 fix: Test cases
(cherry picked from commit f78bf4c6ef)
2021-12-28 13:10:37 +00:00
Deepesh Garg
b616443809 fix: Book unaccrued interest check
(cherry picked from commit c572a4cb88)
2021-12-28 13:10:36 +00:00
Deepesh Garg
3c803c46d3 fix: Repayment schedule revert on cancel
(cherry picked from commit 8f6600b27a)
2021-12-28 13:10:35 +00:00
Deepesh Garg
dc3a0337d1 fix: Unsecured loan status update
(cherry picked from commit dcae9ba86e)

# Conflicts:
#	erpnext/loan_management/doctype/loan_repayment/loan_repayment.py
2021-12-28 13:10:34 +00:00
Deepesh Garg
430617cb68 fix: Loan repayment schedule date
(cherry picked from commit 1a5f0da6ca)
2021-12-28 13:10:32 +00:00
Deepesh Garg
2b1b831560 fix: Updates in term loan processing
(cherry picked from commit 8116b9b62f)

# Conflicts:
#	erpnext/loan_management/doctype/loan/loan.json
2021-12-28 13:10:31 +00:00
mergify[bot]
165114ba4c fix: tests (#29051) (#29060)
* fix(test): create salary slip as per timesheet dates for Project Profitability

* fix(test): reload salary slip before checking for payment days

(cherry picked from commit 88df5ce530)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-12-28 17:28:31 +05:30
Marica
964b19e1b1 Merge pull request #29034 from frappe/mergify/bp/version-13-hotfix/pr-29033
fix: avoid `"string" in None` condition (backport #29033)
2021-12-28 15:02:28 +05:30
Marica
b9e327515b Merge pull request #29058 from frappe/mergify/bp/version-13-hotfix/pr-28555
fix: Validate Finished Goods for Independent Manufacture entries as well (backport #28555)
2021-12-28 15:01:11 +05:30
Deepesh Garg
e0a88d99f4 Merge pull request #29052 from frappe/mergify/bp/version-13-hotfix/pr-29009
fix: Start date validation for deferred invoices (backport #29009)
2021-12-28 14:45:58 +05:30
marination
00b9f1fbef fix: Merge conflict 2021-12-28 14:41:03 +05:30
marination
59aaef3719 fix: Avoid Impact on Repack Entry
- Repack entries must be considered for fg/scrap checkbox auto set
- This must be avoided only for Manufacture entries, due to confusion between scrap and fg
- No scrap in repack, so its straight forward

(cherry picked from commit 22809a2838)
2021-12-28 09:07:08 +00:00
marination
fdf5811c27 fix: Sider
(cherry picked from commit 7d0340e660)
2021-12-28 09:07:07 +00:00
marination
66a5b3f34d fix: Linter (imports)
(cherry picked from commit dfff972a78)
2021-12-28 09:07:07 +00:00
marination
d8b781bb1e test: Independent Manufacture Entry
- Check validations
- Check if FG basic rate is calculated correctly

(cherry picked from commit affb29194b)

# Conflicts:
#	erpnext/stock/doctype/stock_entry/test_stock_entry.py
2021-12-28 09:07:07 +00:00
marination
6c6785e284 fix: Dont auto set is finished item or is scrap itm checkbox for independent entry
- System cant differentiate between scrap and FG when WO is absent, so dont auto set
- User must set it manually
- `validate_finished_goods` checks this

(cherry picked from commit 8c9779d69d)
2021-12-28 09:07:06 +00:00
marination
fc57ed1ca8 fix: Validate Finished Goods for Independent Manufacture entries as well
- Check if FG exists even if WO is absent
- Check if multiple FGs are there, block.

(cherry picked from commit d6bc121999)
2021-12-28 09:07:05 +00:00
mergify[bot]
aeb7bbc629 fix: rename non existent doctype field to the right one (#29055) (#29056)
(cherry picked from commit 095a6e186f)

Co-authored-by: Development for People <47140294+developmentforpeople@users.noreply.github.com>
2021-12-28 14:13:09 +05:30
Deepesh Garg
bdb6c4170b fix: Test case 2021-12-28 14:13:04 +05:30
Deepesh Garg
701bca5845 Merge pull request #28996 from deepeshgarg007/bank_reco_tool_fixes
fix: Issues in Bank Reconciliation tool
2021-12-28 13:40:28 +05:30
Deepesh Garg
becb39da90 fix: Remove debug statement 2021-12-28 13:18:17 +05:30
Marica
aa58653b75 Merge pull request #29053 from frappe/mergify/bp/version-13-hotfix/pr-28966
fix: Stock Ageing Report - Negative Opening Stock (backport #28966)
2021-12-28 13:04:33 +05:30
marination
bae184fc2f fix: Merge Conflicts 2021-12-28 12:43:14 +05:30
marination
24727dbadb fix: Linter (extra line after import)
(cherry picked from commit 6ca978c18b)
2021-12-28 06:54:48 +00:00
marination
ba5f4843c0 test: Stock Ageing FIFO Slot generation
(cherry picked from commit 098f72e7ec)
2021-12-28 06:54:47 +00:00
marination
bf266d82e7 chore: Added .md file to explain stock ageing business logic
(cherry picked from commit c007f84ade)
2021-12-28 06:54:47 +00:00
marination
e30c52861d chore: Use frappe.qb for query
(cherry picked from commit 878fd377c2)
2021-12-28 06:54:46 +00:00
marination
57b7fe6627 fix: Sider and Server side test
- args passed to wrong function
- missing space around '='

(cherry picked from commit 24a35c69c0)
2021-12-28 06:54:46 +00:00
marination
c04b62a7dd fix: Linter (imports)
(cherry picked from commit 8951a5c267)
2021-12-28 06:54:46 +00:00
marination
19fd1fb4b1 fix: Stock Ageing Report - Negative Opening Stock
- Consider negative opening stock in logic and neutralise it with +ve stock
- minor code refactor: class for FIFOSlots to generate chronological FIFO queue

(cherry picked from commit 0f43792dbb)

# Conflicts:
#	erpnext/stock/report/stock_ageing/stock_ageing.py
2021-12-28 06:54:46 +00:00
Deepesh Garg
b00f6676f1 fix: Start date validation for deferred invoices
(cherry picked from commit 7ad149f9fe)
2021-12-28 06:36:26 +00:00
Deepesh Garg
8be6bd978e Merge branch 'version-13-hotfix' into mergify/bp/version-13-hotfix/pr-29033 2021-12-28 11:03:34 +05:30
mergify[bot]
bffe329ade fix: filter out Claimed employee advances in Expense Claim (#29046) (#29047)
(cherry picked from commit 25f4de80b3)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-12-27 21:23:50 +05:30
Rucha Mahabal
b0bc3994c3 fix: flaky HR tests (#29045)
* fix(test): Leave Allocation validation against Leave Application after submit (#29005)

* fix(test): Leave Allocation validation against Leave Application after submit

* chore: clean-up Leave Allocation tests

* fix(test): set holiday list for leave allocation test

* fix: flaky HR tests (#29017)

* fix(test): use root company in Expense Claim tests

* fix(test): set Holiday List for Leave Allocation

* fix(test): set Holiday List for company
2021-12-27 17:26:16 +05:30
Rucha Mahabal
d0d82bc34a fix: ignore links while setting default notification templates in Settings (#29042) 2021-12-27 15:16:58 +05:30
Marica
1c2a8c679c Merge pull request #28951 from dj12djdjs/fix-ecommerce-selling-price-with-rule
fix(e-commerce): fetch selling price with pricing rule
2021-12-27 12:49:33 +05:30
Marica
39fd9ee40d Merge branch 'version-13-hotfix' into fix-ecommerce-selling-price-with-rule 2021-12-27 12:19:41 +05:30
Raffael Meyer
f92cdbbbf3 fix: avoid "string" in None condition
(cherry picked from commit 52397c9771)
2021-12-26 04:50:10 +00:00
Deepesh Garg
3f6d9336b5 Merge pull request #28953 from deepeshgarg007/price_fetch_optimize
fix(UX): Optimize rate updation on changing price list
2021-12-24 19:33:29 +05:30
mergify[bot]
b2e42aa16c chore: add running stock value difference in invariant report (#29012) (#29013)
[skip ci]

(cherry picked from commit 7987a46509)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-12-23 21:17:42 +05:30
Devin Slauenwhite
6783fc808b Merge remote-tracking branch 'upstream/version-13-hotfix' into fix-ecommerce-selling-price-with-rule 2021-12-22 20:58:34 -05:00
Devin Slauenwhite
bcc436e63e fix(test): e-commerce fetch logged-in user item price. 2021-12-22 20:20:57 -05:00
Devin Slauenwhite
7eafc9ffe8 test: e-commerce customer pricing rule 2021-12-22 13:11:02 -05:00
Deepesh Garg
ff183ee895 fix: Issues in Bank Reconciliation tool 2021-12-22 18:04:49 +05:30
Marica
808e40cc4d Merge pull request #28985 from marination/item-card-group-links
fix: Convert Item links to Website Item links in `Item Card Group` template data
2021-12-22 13:53:25 +05:30
Marica
2777b501b5 Merge branch 'version-13-hotfix' into item-card-group-links 2021-12-22 13:25:18 +05:30
marination
a6e7b43f0b fix: Faulty 'continue' not setting value in db 2021-12-22 13:23:00 +05:30
marination
ffdaa849fb fix: Code cleanup 2021-12-22 12:26:43 +05:30
marination
85abb95df6 fix: Sider 2021-12-22 12:24:09 +05:30
Deepesh Garg
b60fbf5ba9 fix: Add round floats for price list rate 2021-12-22 12:01:39 +05:30
Deepesh Garg
233f79bf96 fix: Recalculate taxes irrespective of price list rate changed or not 2021-12-22 11:26:19 +05:30
mergify[bot]
dd01c0e854 fix: Currency fix for cost field in subscription plan (#28821) (#28898)
(cherry picked from commit be103ab8e6)

Co-authored-by: Subin Tom <36098155+nemesis189@users.noreply.github.com>
2021-12-22 10:43:00 +05:30
Devin Slauenwhite
de697a7aee Merge remote-tracking branch 'upstream/version-13-hotfix' into version-13-hotfix 2021-12-21 11:24:53 -05:00
Rohit Waghchaure
498d933e9c Merge branch 'version-13-pre-release' into version-13 2021-12-21 17:25:46 +05:30
Rohit Waghchaure
5c078198a3 bumped to version 13.17.0 2021-12-21 17:45:46 +05:50
rohitwaghchaure
2ef86fb875 Merge pull request #28989 from rohitwaghchaure/change-log-for-v13-17
chore: change log for v13.17.0
2021-12-21 17:24:13 +05:30
Rohit Waghchaure
30a1512cae chore: change log for v13.17.0 2021-12-21 17:18:56 +05:30
mergify[bot]
b59df1118e fix: missed colon (#28979) (#28984)
(cherry picked from commit 076cb408db)

Co-authored-by: Development for People <47140294+developmentforpeople@users.noreply.github.com>
2021-12-21 16:04:22 +05:30
marination
242cc7e23e Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into item-card-group-links 2021-12-21 15:51:50 +05:30
marination
dfe718ef79 fix: Convert Item links to Website Item links in Item Card Group template data
- Changed link option to Website Item in Item card group template
- patch to convert pre-existing data
2021-12-21 15:43:48 +05:30
mergify[bot]
84404bf6e3 fix: Reset value_after_depreciation on reversing journal entry during Asset return (#28980)
(cherry picked from commit 1ed30ee7c7)

Co-authored-by: Ganga Manoj <ganga.manoj98@gmail.com>
2021-12-21 15:13:11 +05:30
mergify[bot]
b2de0e7bbd fix: Reset value_after_depreciation on reversing journal entry during Asset return (#28981)
(cherry picked from commit 1ed30ee7c7)

Co-authored-by: Ganga Manoj <ganga.manoj98@gmail.com>
2021-12-21 15:08:49 +05:30
Deepesh Garg
56d72764b7 Merge pull request #28935 from deepeshgarg007/rcm_tax_template_fetch_issue
fix: Is Reverse Charge check in Tax Category
2021-12-21 13:41:22 +05:30
Deepesh Garg
84cebca254 Merge pull request #28974 from frappe/mergify/bp/version-13-hotfix/pr-28937
fix: Added filter for dispatch address (backport #28937)
2021-12-21 13:04:07 +05:30
Deepesh Garg
7e912db4b1 fix: Add is reverse charge in country wise tax 2021-12-21 12:54:40 +05:30
Deepesh Garg
3fed740142 Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into rcm_tax_template_fetch_issue 2021-12-21 12:54:13 +05:30
Subin Tom
824c90fd11 fix: Added filter for dispatch address (#28937)
(cherry picked from commit 98d417602f)
2021-12-21 07:06:25 +00:00
mergify[bot]
ef47570977 test: remove unnecessary creation of companies #28965 (#28967)
test: remove unnecessary creation of companies
(cherry picked from commit d7148adee5)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-12-20 23:22:34 +05:30
mergify[bot]
87e53e9e46 fix: fetch appointment letter content in the same order as template (#28968) (#28969)
(cherry picked from commit 92e86f2f09)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-12-20 23:17:02 +05:30
Ankush Menat
4107de4514 Merge pull request #28963 from frappe/mergify/bp/version-13-hotfix/pr-28588
fix: incorrect bin qty on backdated reconciliation (backport #28588)
2021-12-20 21:22:56 +05:30
Ankush Menat
9338843dac test: bin qty on backdated SR
(cherry picked from commit 2bb7bca464)
2021-12-20 14:36:40 +00:00
Ankush Menat
2d5f477720 fix: correct bin qty on backdated transactions
When making a backdated transactions current balance qty depends on
evaluation of whole ledger inbetween, instead of doing that just fetch
the last sle's qty_after_transaction when future transactions are
detected against SLE

fix: don't update bin's actual_qty

1. it's already updated by repost_current_voucher
2. update if future sle exists

(cherry picked from commit ff9a6e8e89)
2021-12-20 14:36:40 +00:00
Deepesh Garg
b387fe54a6 Merge pull request #28962 from frappe/mergify/bp/version-13-pre-release/pr-28959
fix: Error on viewing consolidated financial statement (backport #28959)
2021-12-20 17:15:32 +05:30
Deepesh Garg
fa7948b5e5 Merge pull request #28961 from frappe/mergify/bp/version-13-hotfix/pr-28959
fix: Error on viewing consolidated financial statement (backport #28959)
2021-12-20 17:15:13 +05:30
Deepesh Garg
d60f51dd09 fix: Error on viewing consolidated financial statement
(cherry picked from commit 5d6199cf35)
2021-12-20 11:44:25 +00:00
Deepesh Garg
aad7a10a7b fix: Error on viewing consolidated financial statement
(cherry picked from commit 5d6199cf35)
2021-12-20 11:43:50 +00:00
Deepesh Garg
c12b00cb4b Merge pull request #28901 from frappe/mergify/bp/version-13-hotfix/pr-28822
feat: Deferred Revenue and Expense report with actual and upcoming postings (backport #28822)
2021-12-20 17:03:50 +05:30
Deepesh Garg
0980c2f981 fix: Linting issues 2021-12-20 13:26:16 +05:30
Deepesh Garg
4b3ef24378 Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into price_fetch_optimize 2021-12-20 12:17:37 +05:30
Deepesh Garg
6087d5a603 fix(UX): Optimize rate updation of changing price list 2021-12-20 12:16:14 +05:30
Devin Slauenwhite
372f91c923 fix: fetch correct selling price. 2021-12-18 16:03:16 -05:00
mergify[bot]
f2464ce04a fix: incorrect rounding off near zero (#28948) (#28949)
(cherry picked from commit 0724a148e6)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-12-18 21:36:17 +05:30
Ankush Menat
0724a148e6 fix: incorrect rounding off near zero (#28948) 2021-12-18 21:34:25 +05:30
mergify[bot]
d3c62821fb fix: Add Invoice Number field to list view in Opening Invoice Creation Tool (#28941) 2021-12-18 12:07:45 +05:30
mro-admin
c5931e4b1e fix: convert asynchronous field update to synchronous (#28906)
Co-authored-by: Dan Navarro on Ubuntu Work <danjeremynavarro@gmail.com>
2021-12-17 19:06:08 +05:30
Deepesh Garg
a1d5e0bef6 Merge branch 'version-13-hotfix' into mergify/bp/version-13-hotfix/pr-28822 2021-12-17 16:06:21 +05:30
Deepesh Garg
10a95b3a98 Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into rcm_tax_template_fetch_issue 2021-12-17 16:03:22 +05:30
Deepesh Garg
7c1bfe6b46 chore: Remove patch comment 2021-12-17 16:02:40 +05:30
Deepesh Garg
b33fd6acc7 fix: Is Reverse Charge check in Tax Category 2021-12-17 15:59:21 +05:30
mergify[bot]
5a6ea7a829 fix(ksa): enable ksa pos invoice print format (#28934) 2021-12-17 15:27:23 +05:30
mergify[bot]
9c2a9c28df fix(ksa): enable ksa pos invoice print format (backport #28911) 2021-12-17 15:27:05 +05:30
Deepesh Garg
349785dcbd Merge pull request #28932 from frappe/mergify/bp/version-13-hotfix/pr-28916
fix: Multicurrency invoices using subscription (backport #28916)
2021-12-17 13:52:30 +05:30
Deepesh Garg
94d3e66428 fix: Add tests for multicurrency subscription
(cherry picked from commit 6ab753015e)
2021-12-17 06:59:59 +00:00
Deepesh Garg
eb36742427 fix: Multicurrency invoices using subscription
(cherry picked from commit 0e4842b986)
2021-12-17 06:59:59 +00:00
mergify[bot]
fcb08d54ea fix: mapping to maintenance visit gets erased (#28917) (#28925)
* fix: mappings to maintenance visit gets erased

* test: mapping of schedule to visit

(cherry picked from commit 4cb5b627a1)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2021-12-16 23:33:56 +05:30
mergify[bot]
3dd12143a2 fix: mapping to maintenance visit gets erased (#28917) (#28926)
* fix: mappings to maintenance visit gets erased

* test: mapping of schedule to visit

(cherry picked from commit 4cb5b627a1)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2021-12-16 23:33:43 +05:30
mergify[bot]
ac17bc3d31 chore: ledger invariant check report (#28921) (#28923)
(cherry picked from commit 6ba8f7644d)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-12-16 22:48:33 +05:30
mergify[bot]
167e8d3dde chore: ledger invariant check report (#28921) (#28922)
(cherry picked from commit 6ba8f7644d)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-12-16 22:48:12 +05:30
mergify[bot]
85ded9e7ce perf: remove forcing of posting sort index on stock balance (#28902) (#28904)
mysql is generally smart enough to figure out which index is better
based on cardinality of index. While posting sort index is better for
low item high # of SLE scenario it's bad for high item variety each with
lower count of SLEs.

(cherry picked from commit 228e011819)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-12-15 19:23:12 +05:30
ruthra
74ac5e7829 refactor: rename checkbox and translations
- rename checkbox and make it
 - added translation text for labels
 - fixes for linter error

(cherry picked from commit 9ec8841b91)
2021-12-15 09:33:46 +00:00
ruthra
804f2ccf3d refactor: remove unused function 'get_postings'
(cherry picked from commit a8a598ace7)
2021-12-15 09:33:45 +00:00
ruthra
039b1fbb76 feat: Deferred Revenue and Expense report
- show deferred revenue and expense with actual and expected postings
 - unit tests added

(cherry picked from commit c3453cd73c)
2021-12-15 09:33:45 +00:00
mergify[bot]
970cdef911 feat: added required_date field to set date in child table (backport #28432)
feat: added required_date field to set date in child table (backport #28432)
2021-12-15 12:49:23 +05:30
mergify[bot]
6b248db0c9 fix: hsn-wise summary is incorrect if an invoice has repeated item code (#28892) 2021-12-15 11:45:59 +05:30
mergify[bot]
a712e5cee6 revert: "fix: expected value after useful life validation" (#28891) 2021-12-15 11:09:34 +05:30
mergify[bot]
1988e72710 revert: "fix: expected value after useful life validation" (backport #28853) 2021-12-15 11:09:21 +05:30
Saqib
cd075ce3be Merge pull request #28854 from frappe/mergify/bp/version-13-hotfix/pr-28783
fix: hsn-wise summary is incorrect if an invoice has repeated item code (backport #28783)
2021-12-15 10:35:25 +05:30
Ankush Menat
bdd43274b2 fix: incorrect logic for "Reserved Qty for Production" (#28880)
* fix: reservation for production incorrect

The query uses case to decide what fields to compute reservation on,
this case is outermost case hence the very first Work order's "Skip
transfer" is considered for ALL work orders.

Solution: move the case inside Sum.

Steps to reproduce:
1. Make work order for more than 1 qty (with | without skip transfer)
2. Create manufacture and transfer entries.
3. Keep checking reserved quantities during this process.

* test: use default warehouse for testing reservation

(cherry picked from commit 80f1a8c645)
2021-12-14 18:22:10 +05:30
Ankush Menat
25fd11e24f test: timeout certain tests in work order to avoid stuck tests (#28666) 2021-12-14 18:21:48 +05:30
Ankush Menat
73693ac153 test: remove commits from tests (#27939)
* test: remove commits from tests in selling module

* test: remove commits from manufacturing module

* test: remove commits from accounts module tests

* test: remove commits from controller tests

* test: keep commits in accounting dimension test

* Revert "test: remove commits from controller tests"

This reverts commit f5cfbee5da.

* Revert "test: remove commits from accounts module tests"

This reverts commit df4c27efdd.

(cherry picked from commit 96ef88d935)
2021-12-14 18:21:48 +05:30
mergify[bot]
a4814f5519 fix: remove set only once from valuation method (#28876) (#28882)
(cherry picked from commit 66960cf050)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-12-14 17:29:40 +05:30
Deepesh Garg
aee4f87b07 Merge pull request #28868 from frappe/mergify/bp/version-13-pre-release/pr-28832
fix: KSA QR field rename patch (backport #28832)
2021-12-14 16:02:06 +05:30
Deepesh Garg
a6f9b523d9 Merge pull request #28867 from frappe/mergify/bp/version-13-hotfix/pr-28832
fix: KSA QR field rename patch (backport #28832)
2021-12-14 16:01:57 +05:30
mergify[bot]
d0d5236a1a Merge pull request #28845 from ruchamahabal/fix-salary-slip-timesheet (#28874)
fix: incorrect amount based on payment days in timesheet salary slip
(cherry picked from commit b027050f77)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-12-14 15:32:22 +05:30
mergify[bot]
b3720f62d8 fix: Nonstock item showing in Itemwise Recommended Reorder Level report bp (#28873)
(cherry picked from commit 304aa44feb)

Co-authored-by: aaronmenezes <ron2805@gmail.com>
2021-12-14 15:19:11 +05:30
mergify[bot]
0d8ad4d64b fix: reorder patch to fix custom field options (backport #28866)
* fix: reorder patch to fix custom field options (#28866)

(cherry picked from commit 7fd06108bf)

# Conflicts:
#	erpnext/patches.txt

* fix: resolve conflict

Co-authored-by: Ankush Menat <ankush@frappe.io>
(cherry picked from commit 187a69e390)

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2021-12-14 14:05:21 +05:30
mergify[bot]
187a69e390 fix: reorder patch to fix custom field options (backport #28866)
* fix: reorder patch to fix custom field options (#28866)

(cherry picked from commit 7fd06108bf)

# Conflicts:
#	erpnext/patches.txt

* fix: resolve conflict

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-12-14 14:03:14 +05:30
Deepesh Garg
198b427349 fix: KSA QR field rename patch
(cherry picked from commit 14d03a9446)
2021-12-14 07:18:54 +00:00
Deepesh Garg
55db2f8808 fix: KSA QR field rename patch
(cherry picked from commit 14d03a9446)
2021-12-14 07:18:33 +00:00
mergify[bot]
1a986f0b11 fix(UX): hide RM table(Job Card) if material transfer is against work order (backport #28746)
* fix(UX): hide RM table(Job Card) if material transfer is against work order (#28746)

(cherry picked from commit cc8c0595e2)

# Conflicts:
#	erpnext/manufacturing/doctype/job_card/job_card.js

* chore: resolve conflicts

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-12-14 12:44:42 +05:30
mergify[bot]
5798687951 fix: packing slip incorrect item value (bp #28862)
(cherry picked from commit 534c64abcd)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-12-14 12:16:42 +05:30
mergify[bot]
0e68037082 fix: migration hashes (#28850) (#28860)
Co-authored-by: Ankush Menat <ankush@frappe.io>
(cherry picked from commit 46a6c8dbfe)

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2021-12-14 11:13:58 +05:30
mergify[bot]
46a6c8dbfe fix: migration hashes (#28850)
Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-12-14 11:10:57 +05:30
rohitwaghchaure
e08c9cc250 Merge pull request #28855 from rohitwaghchaure/merge-hotfix-to-pre-release-for-13-17
chore: merge branch 'version-13-hotfix' into 'version-13-pre-release'
2021-12-14 00:47:47 +05:30
Rohit Waghchaure
a3189226a5 chore: merge branch 'version-13-hotfix' into 'version-13-pre-release' 2021-12-13 23:01:11 +05:30
Saqib Ansari
1f41c7fed1 test: test_hsn_summary_for_invoice_with_duplicate_items
(cherry picked from commit 6a239c8ea3)
2021-12-13 17:10:20 +00:00
Saqib Ansari
1c96c6fe08 fix: hsn-wise summary is incorrect if an invoice has repeated item code
(cherry picked from commit e74739a677)
2021-12-13 17:10:19 +00:00
Saqib
99c6db155d Merge pull request #28852 from frappe/mergify/bp/version-13-hotfix/pr-28677
fix: Fix 'Adjust Asset Value' button (backport #28677)
2021-12-13 22:17:40 +05:30
GangaManoj
cefd0185a6 fix: Rename function
(cherry picked from commit 4629308d94)
2021-12-13 16:23:35 +00:00
GangaManoj
414558aa70 fix: Rename variable
(cherry picked from commit 5b224f841b)
2021-12-13 16:23:34 +00:00
GangaManoj
e10eea931b fix: Fix 'Adjust Asset Value' button
(cherry picked from commit 6f1cf94c9f)
2021-12-13 16:23:33 +00:00
GangaManoj
d000782de0 fix: Edit dates and frequency of depreciation
(cherry picked from commit 4311936b7d)
2021-12-13 16:20:51 +00:00
GangaManoj
855ae399b5 fix: Test if clear_depreciation_schedule() works for multiple finance books
(cherry picked from commit 6ec5a19063)
2021-12-13 16:20:50 +00:00
GangaManoj
ae875ab021 fix: Retain depreciation schedule rows that are linked with JEs while clearing the schedule
(cherry picked from commit 33a0b1db2c)
2021-12-13 16:20:49 +00:00
GangaManoj
57f41bc30a fix: Test if multiple Depreciation Schedules are set up for multiple Finance Books
(cherry picked from commit f455de2924)
2021-12-13 16:20:49 +00:00
GangaManoj
8a4019e501 fix: Clear Depreciation Schedule entries that aren't linked with Journal Entries before modifying the schedule
(cherry picked from commit 475d8394e4)
2021-12-13 16:20:48 +00:00
GangaManoj
54cac351cd fix: Rename loop variable
(cherry picked from commit 059d1f3b74)

# Conflicts:
#	erpnext/assets/doctype/asset/asset.py
2021-12-13 16:20:47 +00:00
GangaManoj
db3d2c31a3 fix: Prevent clearing of Depreciation Schedule on adding more than one Finance Book
(cherry picked from commit a4043c035d)
2021-12-13 16:20:43 +00:00
mergify[bot]
8fe5326c8e fix: validate if asset account is set against company (#28849) 2021-12-13 21:10:03 +05:30
Deepesh Garg
61f48e9856 Merge pull request #28836 from frappe/mergify/bp/version-13-hotfix/pr-28748
fix: Ageing in AR/AP report for advances (backport #28748)
2021-12-12 19:29:53 +05:30
Deepesh Garg
24b37defcc Merge pull request #28835 from frappe/mergify/bp/version-13-hotfix/pr-28764
fix: TDS Monthly payable report (backport #28764)
2021-12-12 19:29:41 +05:30
Deepesh Garg
fac357ebe9 fix: Ageing in AR/AP report for advances
(cherry picked from commit 3dabac15ed)
2021-12-12 11:57:41 +00:00
Deepesh Garg
44f97dfd5e fix: TDS Monthly payable report
(cherry picked from commit d106d59c3f)
2021-12-12 11:42:46 +00:00
mergify[bot]
59f6277e4d feat(buying): quotation number in supplier quotation (#28827)
(cherry picked from commit 624481be6f)

Co-authored-by: Himanshu <himanshuwarekar@yahoo.com>
2021-12-11 17:37:17 +05:30
Dany Robert
3f686a67e6 fix: no module named 'redisearch' (#28818)
* chore: rename file to avoid the overriding

* fix: rename ref #1

* fix: rename ref in e_commerce_settings

* fix: rename ref in product_search.py

* chore: rename rsearch.py to redisearch_utils.py

* chore: rename rsearch to redisearch_utils in product_search
2021-12-10 18:13:22 +05:30
rohitwaghchaure
7f9d0061ac Merge pull request #28819 from frappe/mergify/bp/version-13-hotfix/pr-28815
fix: validate pending reposts before freezing stock/account (backport #28815)
2021-12-10 17:52:17 +05:30
Ankush Menat
140e91f459 test: stock frozen validation
(cherry picked from commit 75bc404cbe)
2021-12-10 11:42:16 +00:00
Ankush Menat
9e69725102 fix: ensure that reposting is finished before freezing stock/account
(cherry picked from commit d37541d3fb)
2021-12-10 11:42:15 +00:00
mergify[bot]
d2fac14922 feat: added QI link in Job Card Dashboard (#28643) (#28810)
(cherry picked from commit f1c0190f02)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2021-12-09 20:31:42 +05:30
mergify[bot]
99851e7f3a refactor: map serial from schedule if only one (#28747)
(cherry picked from commit eb522a3746)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2021-12-09 20:26:21 +05:30
mergify[bot]
623d32597d fix: misleading "Set Default X" fields after saving (#28798) (#28809)
* fix: misleading "Set Default X" fields after saving

* refactor: remove unncessary code and minor formatting

* fix: extend to more doctypes and correct fieldnames

Co-authored-by: Ankush Menat <ankush@frappe.io>
(cherry picked from commit 6485ac4e59)

Co-authored-by: Sagar Sharma <sagarsharma.s312@gmail.com>
2021-12-09 17:21:12 +05:30
mergify[bot]
4d0d39c59c fix: deduplicate after finishing the repost (#28803) (#28806)
Not really a bug but avoids potential of prematurely skipping something
if failure occurs and failure isn't resolved.

(cherry picked from commit c64d5028b4)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-12-09 15:55:38 +05:30
Saqib
0cf3ab3264 Merge pull request #28799 from rtdany10/version-13-hotfix
feat(Regional): KSA E-Invoing optimizations and POS support
2021-12-09 13:05:52 +05:30
mergify[bot]
43bc612f07 fix: wrong german translation of abbreviation PAN (#28804)
Wrong german translation of abbreviation: PAN

(cherry picked from commit f043f59324)

Co-authored-by: Michael Köller <michael.koeller@greenbytes.de>
2021-12-09 11:39:05 +05:30
Dany Robert
f98a410501 feat: KSA POS Invoice 2021-12-08 23:19:29 +05:30
Dany Robert
dde17b3585 feat: init KSA POS Invoice 2021-12-08 23:18:16 +05:30
Dany Robert
9006ed4ac2 feat: run patches 2021-12-08 23:16:25 +05:30
Dany Robert
3373fcceb6 feat: rename old qr fields 2021-12-08 23:15:08 +05:30
Dany Robert
6c1bc27b12 feat: disable print formats for other countries 2021-12-08 23:13:50 +05:30
Dany Robert
73ce03288c fix: disable print format by default 2021-12-08 23:11:12 +05:30
Dany Robert
f4c8be820e feat: generate QR code for POS invoice 2021-12-08 23:05:34 +05:30
Dany Robert
2e3c9c0aad feat: create QR field incase of missing 2021-12-08 23:04:02 +05:30
Dany Robert
c6d4a23bdc fix: rename QR field and enable print formats 2021-12-08 23:01:12 +05:30
aaronmenezes
3aead835c5 fix: Maintenence Visit -Purpose (item ) tables is not visible on submitted or saved entries (#28792)
(cherry picked from commit 90b98440e2)
2021-12-08 16:50:58 +05:30
Ankush Menat
0d71496461 test: add multi-batch negative qty test
(cherry picked from commit 96a019ec49)
2021-12-08 16:50:28 +05:30
Ankush Menat
1aec6a6cb5 test: simplfy test and expect specific exception
(cherry picked from commit f0152d03a4)
2021-12-08 16:50:28 +05:30
Ankush Menat
f139b4aac6 refactor: remove redundant batch qty validation
This check was only checking total sum, which is problamatic when making
backdated entries that can cause intermediate values to go negative
while overall values stay positive.

(cherry picked from commit 9c90b7a40d)
2021-12-08 16:50:28 +05:30
Ankush Menat
68a9c3e160 fix: check future negative stock for batches
batch's ledger is only maintained in form of `actual_qty` on batch's
SLEs. To validate if batch has any negative qty in future, cumulative
total of `actual_qty` is required to ensure it never goes negative.

(cherry picked from commit 5eba57528c)
2021-12-08 16:50:28 +05:30
18alantom
341a02eaf4 test: check execution of illegal stock entry seq
(cherry picked from commit 1cbeba5f1d)
2021-12-08 16:50:28 +05:30
Deepesh Garg
57b70ace9b Merge pull request #28791 from deepeshgarg007/version-13-tax-hotfix
fix: Error on Invoice generation
2021-12-08 14:15:52 +05:30
Deepesh Garg
4fe5d8b1ae fix: Error on Invoice generation 2021-12-08 14:14:04 +05:30
Deepesh Garg
f22bbaa9ba Merge pull request #28788 from frappe/mergify/bp/version-13-pre-release/pr-28786
fix: Error on Invoice generation (backport #28786)
2021-12-08 14:12:00 +05:30
Deepesh Garg
f478d2d36a fix: Error on Invoice generation
(cherry picked from commit 82255293c4)
2021-12-08 08:40:05 +00:00
Deepesh Garg
d9f92ddc27 Merge pull request #28786 from deepeshgarg007/tax_template_fix_new
fix: Error on Invoice generation
2021-12-08 14:09:08 +05:30
Deepesh Garg
82255293c4 fix: Error on Invoice generation 2021-12-08 14:06:34 +05:30
Rohit Waghchaure
fa304f3300 Merge branch 'version-13-pre-release' into version-13 2021-12-08 13:27:11 +05:30
Rohit Waghchaure
603b1888fc bumped to version 13.16.1 2021-12-08 13:47:11 +05:50
Deepesh Garg
20f9015620 Merge pull request #28784 from frappe/mergify/bp/version-13-pre-release/pr-28777
fix: Error on creating invoice (backport #28777)
2021-12-08 12:13:08 +05:30
Deepesh Garg
153c9221a9 fix: Error on creating invoice
(cherry picked from commit e11515a356)
2021-12-08 06:42:36 +00:00
Deepesh Garg
5a6d7706a6 Merge pull request #28777 from deepeshgarg007/auto_tax_fetch_fixes
fix: Error on creating invoice
2021-12-07 22:19:52 +05:30
Deepesh Garg
e11515a356 fix: Error on creating invoice 2021-12-07 18:44:05 +05:30
Deepesh Garg
f5ab2f4f8c Merge pull request #28773 from frappe/mergify/bp/version-13-hotfix/pr-28731
fix: Better Error logging for deferred revenue/expense booking (backport #28731)
2021-12-07 16:55:20 +05:30
mergify[bot]
28b84ad7d6 fix: ignore mandatory fields while creating WO from SO (#28772) (#28774)
If fields are made mandatory from customizations the WO creation simply
fails.

(cherry picked from commit 6efbbb1058)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-12-07 16:49:43 +05:30
Deepesh Garg
dad9a913db fix: Log error before throwing exception
(cherry picked from commit 3c64e201cc)
2021-12-07 10:12:59 +00:00
Deepesh Garg
6b8b2946c1 fix: Commit joural entries
(cherry picked from commit 0ba4fcee2a)
2021-12-07 10:12:58 +00:00
Deepesh Garg
46e492d594 fix: Better Error logging fordeferred revenue/expense booking
(cherry picked from commit 67a001d876)
2021-12-07 10:12:58 +00:00
Saqib
f9742394f3 feat: Make Depreciation Entry posting more flexible 2021-12-06 16:45:15 +05:30
Saqib
ef65774b77 fix: Create Depreciation Schedules for existing Assets accurately (backport #28675) 2021-12-06 16:44:38 +05:30
Saqib Ansari
a9bcc869b9 fix: conflicts 2021-12-06 16:12:18 +05:30
Saqib Ansari
f908dcf510 Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into mergify/bp/version-13-hotfix/pr-28675 2021-12-06 16:10:54 +05:30
Saqib Ansari
5b25558135 fix(test): test_depr_entry_posting_with_income_account 2021-12-06 16:07:38 +05:30
GangaManoj
c8541ed8e5 fix: Test Depreciation Entry posting when Depreciation Expense Account is an Income Account 2021-12-06 16:07:29 +05:30
GangaManoj
5763f8405a fix: Test Depreciation Entry posting when Depreciation Expense Account is an Expense Account 2021-12-06 16:07:29 +05:30
GangaManoj
d898e74980 fix: Check root_type of Depreciation Expense Account 2021-12-06 16:07:29 +05:30
GangaManoj
81c88d643a fix: Check all ancestors and not just the root node 2021-12-06 16:07:06 +05:30
GangaManoj
78032dfb35 fix: Only raise an error if Depreciation Expense Account is neither an Income nor an Expense Account 2021-12-06 16:07:06 +05:30
GangaManoj
ce86bcf1eb fix: Make Depreciation Entry posting more flexible 2021-12-06 16:07:06 +05:30
GangaManoj
84952beed4 fix: Filter Depreciation Expense Account by root type 2021-12-06 16:06:27 +05:30
Deepesh Garg
334f22f453 Merge pull request #28744 from frappe/mergify/bp/version-13-hotfix/pr-28656
fix: Taxjar Nexus list visible only if child table is visible (backport #28656)
2021-12-06 15:57:14 +05:30
Saqib Ansari
d55daf5910 Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into mergify/bp/version-13-hotfix/pr-28675 2021-12-06 15:49:02 +05:30
Saqib
416faf76df fix: Calculate depreciation_amount accurately (backport #27585) 2021-12-06 15:43:48 +05:30
Saqib Ansari
1a2e815e6a fix: asset not copied on creating invoice return 2021-12-06 15:16:25 +05:30
Ankush Menat
90131f5e6e fix: reload sellling settings before patch 2021-12-06 12:12:35 +05:30
Ankush Menat
9a1b4119e9 test: set customer group and territory defaults
(cherry picked from commit a8375239eb)
2021-12-06 12:12:35 +05:30
Ankush Menat
e9af26e7b6 fix: patch to remove default item group and territory
(cherry picked from commit bdf7b8d379)
2021-12-06 12:12:35 +05:30
Ankush Menat
93ee870bf9 fix: remove bad defaults from selling settings
"All cusotmer groups" and "All territories" are pointless defaults, not
sure why these are made default. They don't help you track anything.
"All" might as well be `Null`.

Even the filters for customer_group suggest it shouldn't be group then
having the root as default makes no sense.

(cherry picked from commit 105b6d498c)
2021-12-06 12:12:35 +05:30
Subin Tom
a36c13e2d5 fix: removing db call for variables
(cherry picked from commit ecc5de6159)
2021-12-06 06:14:46 +00:00
Subin Tom
7529382c5a fix: Taxjar Nexus list visible only if child table is visible
(cherry picked from commit 0963fceede)
2021-12-06 06:14:45 +00:00
Saqib Ansari
635fd5e8f8 fix: conflicts 2021-12-06 11:33:37 +05:30
Rohit Waghchaure
5c1a2aee3a Merge branch 'version-13-pre-release' into version-13 2021-12-06 00:24:07 +05:30
Rohit Waghchaure
0e8981028e bumped to version 13.16.0 2021-12-06 00:44:06 +05:50
rohitwaghchaure
55c653a7f8 Merge pull request #28737 from rohitwaghchaure/change-log-for-v13-16
chore: change log for v13.16.0
2021-12-06 00:20:44 +05:30
Rohit Waghchaure
6398e588ec chore: change log for v13.16.0 2021-12-05 23:56:31 +05:30
mergify[bot]
b6ef93d574 fix(patch): create only component type field instead of running the whole setup (#28734) (#28736)
(cherry picked from commit 0ef42d1000)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-12-05 13:05:34 +05:30
mergify[bot]
797b75224e fix(patch): create only component type field instead of running the whole setup (#28734) (#28735)
(cherry picked from commit 0ef42d1000)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-12-05 13:03:08 +05:30
Noah Jacob
ddcbea3d0a test: added tests for manufacture stock entry when material_consumption is enabled
(cherry picked from commit 35346de162)
2021-12-04 18:51:16 +05:30
Noah Jacob
27c8c361d6 fix: incorrect outgoing rates when material_consumption enabled
(cherry picked from commit 7f3e6d149a)
2021-12-04 18:51:16 +05:30
rohitwaghchaure
ad9e45bd54 Merge pull request #28728 from frappe/mergify/bp/version-13-hotfix/pr-28710
fix: incorrect outgoing rates when material_consumption enabled (backport #28710)
2021-12-04 12:55:13 +05:30
Noah Jacob
740682ec20 test: added tests for manufacture stock entry when material_consumption is enabled
(cherry picked from commit 35346de162)
2021-12-04 07:05:15 +00:00
Noah Jacob
b59f5c2574 fix: incorrect outgoing rates when material_consumption enabled
(cherry picked from commit 7f3e6d149a)
2021-12-04 07:05:15 +00:00
Ankush Menat
35a3fbd4ed fix: weird item sorting by idx
(cherry picked from commit ba5a7ffd60)
2021-12-03 19:12:13 +05:30
Ankush Menat
c57f639ed8 fix: remove autocommit from item rename
(cherry picked from commit 5caf411be3)
2021-12-03 18:57:33 +05:30
Ankush Menat
8e19608d0f fix!: dont allow renaming warehouse primary key
(cherry picked from commit 72dbc3d6b8)
2021-12-03 18:57:33 +05:30
Ankush Menat
61eb754862 refactor: simplify the way SLEs are submitted
(cherry picked from commit cef84c25a7)
2021-12-03 18:48:22 +05:30
Ankush Menat
a9bf4ad8fa refactor: replace misleading variable name
(cherry picked from commit 97060c45e9)
2021-12-03 18:48:22 +05:30
Saqib
2a6d202061 fix: test wdv method for indian region
(cherry picked from commit 7681600b5e)
2021-12-03 11:24:46 +00:00
GangaManoj
a424f55943 fix: Test for WDV
(cherry picked from commit f047c6ffc8)

# Conflicts:
#	erpnext/assets/doctype/asset/test_asset.py
2021-12-03 11:24:45 +00:00
Saqib
b937c55b85 fix: reset temporary flag after use
(cherry picked from commit a261d08dd8)
2021-12-03 11:24:43 +00:00
GangaManoj
445f1b2a09 fix: Linters
(cherry picked from commit 06c505ddc2)
2021-12-03 11:24:42 +00:00
GangaManoj
f0076ca3f9 fix: Add flag for reverse depreciation entries
(cherry picked from commit cde0dae987)
2021-12-03 11:24:42 +00:00
GangaManoj
5146985a66 fix: Replace post_depreciation_entries() with make_depreciation_entry()
(cherry picked from commit 82bf5e5539)
2021-12-03 11:24:41 +00:00
GangaManoj
92ebe52432 fix: Only add additional depreciation schedule row on sale if depreciation_amount > 0
(cherry picked from commit 9e7022830e)
2021-12-03 11:24:40 +00:00
GangaManoj
595d6c31b5 fix: Add missing digit
(cherry picked from commit 0b8cb5dd47)
2021-12-03 11:24:40 +00:00
GangaManoj
c104a2a2f4 fix: Sider issues
(cherry picked from commit fdeb273fa0)
2021-12-03 11:24:39 +00:00
GangaManoj
9595f7cc3f fix: Add missing digit
(cherry picked from commit 60aae4423d)
2021-12-03 11:24:38 +00:00
GangaManoj
6657a15898 fix: Compare date strings
(cherry picked from commit 371b621364)
2021-12-03 11:24:38 +00:00
GangaManoj
db06373fa6 fix: Format tests
(cherry picked from commit e9d310a13e)

# Conflicts:
#	erpnext/assets/doctype/asset/test_asset.py
2021-12-03 11:24:36 +00:00
GangaManoj
a5b8b4ac41 fix: Remove PR creation from all tests in TestDepreciationBasics
(cherry picked from commit 968be70bd1)

# Conflicts:
#	erpnext/assets/doctype/asset/test_asset.py
2021-12-03 11:24:34 +00:00
GangaManoj
38ec9c80fc fix: Remove PR creation from all tests for Depreciation Methods
(cherry picked from commit 09215a9781)

# Conflicts:
#	erpnext/assets/doctype/asset/test_asset.py
2021-12-03 11:24:32 +00:00
GangaManoj
627d9633b2 fix: Move Purchase Receipt creation to setUpClass
(cherry picked from commit 4bf01bb4b7)
2021-12-03 11:24:29 +00:00
GangaManoj
511c742fd9 fix: Move test for Finance Books to Depreciation test suite
(cherry picked from commit e8986df3ca)
2021-12-03 11:24:29 +00:00
GangaManoj
026d72aff8 fix: Add test to validate available_for_use_date
(cherry picked from commit 83ec9879ee)
2021-12-03 11:24:28 +00:00
GangaManoj
0442230d98 fix: Enable cwip accounting
(cherry picked from commit 749d1b6ee6)
2021-12-03 11:24:27 +00:00
GangaManoj
e1f4672023 fix: Only validate against JV if it's not a reverse depreciation entry
(cherry picked from commit 8ea1ad9232)
2021-12-03 11:24:26 +00:00
GangaManoj
86fcc94b7a fix: Add tests to validate item
(cherry picked from commit a7ec007dcf)
2021-12-03 11:24:26 +00:00
GangaManoj
d81f4e625a fix: Add tests to validate Asset values
(cherry picked from commit d8aaf3d389)
2021-12-03 11:24:25 +00:00
GangaManoj
3cc8dd2b47 fix: Add tearDownClass()
(cherry picked from commit 4918e9533b)
2021-12-03 11:24:24 +00:00
GangaManoj
e28a7f11b7 fix: Replace setUp() with setUpClass()
(cherry picked from commit ef3f2fcb3a)
2021-12-03 11:24:24 +00:00
GangaManoj
5972acf0ec fix: Add test for depreciation on return of sold Asset
(cherry picked from commit 273fccf0dd)
2021-12-03 11:24:23 +00:00
GangaManoj
53789ae4d6 fix: Adjust depreciation_amount in final row
(cherry picked from commit adebf2d71b)
2021-12-03 11:24:22 +00:00
GangaManoj
4735162bdc fix: Unlink Depreciation Entry made on sale if the Asset is returned
(cherry picked from commit f51bd44929)
2021-12-03 11:24:21 +00:00
GangaManoj
d189ea8d37 fix: Rename tests
(cherry picked from commit 62fea8a5aa)
2021-12-03 11:24:20 +00:00
GangaManoj
ae6bac9fcb fix: Categorize into test suites
(cherry picked from commit c84c983073)

# Conflicts:
#	erpnext/assets/doctype/asset/test_asset.py
2021-12-03 11:24:18 +00:00
GangaManoj
94c3e0503f fix: Add tests for depreciation
(cherry picked from commit 40ec2d622b)

# Conflicts:
#	erpnext/assets/doctype/asset/test_asset.py
2021-12-03 11:24:15 +00:00
GangaManoj
7c114c0bc5 fix: Replace asset.schedules with asset.get('schedules')
(cherry picked from commit fdd9e6cc3c)
2021-12-03 11:24:13 +00:00
GangaManoj
46c0e349f6 fix: Reverse depreciation entry made on sale if asset that was set to be sold in the future gets returned
(cherry picked from commit 796ed947ce)
2021-12-03 11:24:12 +00:00
GangaManoj
91fbe54b8d fix: Reset depreciation schedule on returning asset
(cherry picked from commit b9fb59da58)
2021-12-03 11:24:12 +00:00
GangaManoj
7921e7ebfd fix: Add test for depreciation on sale of a depreciated Asset
(cherry picked from commit 7ab3b9dd5a)
2021-12-03 11:24:11 +00:00
GangaManoj
efe9926bb4 fix: Add depreciation_schedule details in create_asset()
(cherry picked from commit 249672c35d)
2021-12-03 11:24:10 +00:00
GangaManoj
9eb37197e0 fix: Remove extra brackets
(cherry picked from commit 700e78d69b)
2021-12-03 11:24:08 +00:00
GangaManoj
311f9c8389 fix: Calculate depreciation_amount accurately
(cherry picked from commit 3c8879e777)
2021-12-03 11:24:08 +00:00
GangaManoj
04acf5b08c fix: Correct expected_values
(cherry picked from commit 244d9dee04)
2021-12-03 11:24:07 +00:00
GangaManoj
9a3a22a08e fix: Calculate depreciation_left accurately
(cherry picked from commit 164a2ad28d)
2021-12-03 11:24:06 +00:00
mergify[bot]
e1c209973c fix(ksa): qrcode for invoices with special chars (#28717) 2021-12-03 16:38:26 +05:30
mergify[bot]
09f0e9be86 fix(ksa): qrcode for invoices with special chars (#28716) 2021-12-03 16:37:57 +05:30
Saqib
d021fc8464 Merge branch 'version-13-hotfix' into mergify/bp/version-13-hotfix/pr-28675 2021-12-03 15:59:01 +05:30
mergify[bot]
521318b4ad fix: cannot load company form (#28663) 2021-12-03 15:58:29 +05:30
Deepesh Garg
c02d46862d Merge pull request #28713 from frappe/mergify/bp/version-13-hotfix/pr-28708
fix: Invoice amount in KSA E Invoice QR Code (backport #28708)
2021-12-03 15:52:29 +05:30
Deepesh Garg
4c1d1555d2 Merge pull request #28711 from frappe/mergify/bp/version-13-pre-release/pr-28708
fix: Invoice amount in KSA E Invoice QR Code (backport #28708)
2021-12-03 15:47:20 +05:30
Deepesh Garg
64feb2862b Merge pull request #28697 from frappe/mergify/bp/version-13-pre-release/pr-28654
fix: Taxes and Charges template not getting copied from Purchase Order/Receipt to Invoice (backport #28654)
2021-12-03 15:46:53 +05:30
Deepesh Garg
3b3f764ef2 fix: Invocie amount in KSA E Invoice QR Code
(cherry picked from commit f2ffddf059)
2021-12-03 09:55:41 +00:00
Deepesh Garg
6fd7460abf fix: Invocie amount in KSA E Invoice QR Code
(cherry picked from commit f2ffddf059)
2021-12-03 09:54:46 +00:00
Deepesh Garg
e4c9581d6e Merge pull request #28642 from frappe/mergify/bp/version-13-pre-release/pr-28302
fix: Shipping Rule picking up old net_rate (backport #28302)
2021-12-03 15:20:28 +05:30
Deepesh Garg
b09274bd49 Merge pull request #28641 from frappe/mergify/bp/version-13-hotfix/pr-28302
fix: Shipping Rule picking up old net_rate (backport #28302)
2021-12-03 15:20:09 +05:30
mergify[bot]
99dfa91f81 feat: Grant commission on certain items only (#28645)
Co-authored-by: Sagar Vora <sagar@resilient.tech>
(cherry picked from commit e10ab1626c)
2021-12-03 15:17:45 +05:30
Saqib
f80e670580 Merge branch 'version-13-hotfix' into mergify/bp/version-13-hotfix/pr-28675 2021-12-03 12:59:17 +05:30
mergify[bot]
2f6b1569f4 fix(Non Profit): fetch memberships for 80G certificate by from date only (#28700) (#28704)
(cherry picked from commit 0b1808e1ee)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-12-03 12:08:14 +05:30
Saqib
f106e15fcc Merge branch 'version-13-hotfix' into mergify/bp/version-13-hotfix/pr-28675 2021-12-03 11:53:32 +05:30
mergify[bot]
97dd2dbc56 fix: qrcode image name for invoices with special chars (#28702) 2021-12-03 11:53:02 +05:30
mergify[bot]
83418f5110 fix: qrcode image name for invoices with special chars 2021-12-03 11:52:47 +05:30
Saqib Ansari
bcb372ab61 fix: conflicts 2021-12-03 11:46:50 +05:30
Saqib Ansari
ae330bc132 fix: conflicts 2021-12-03 11:44:06 +05:30
GangaManoj
e5a5d5f8e5 fix: Remove unnecessary variable
(cherry picked from commit 828769ca70)

# Conflicts:
#	erpnext/assets/doctype/asset/asset.py
#	erpnext/regional/india/utils.py
2021-12-03 06:02:55 +00:00
GangaManoj
a12000921f fix: Test if depreciation schedules are set up properly for existing assets
(cherry picked from commit 774ac852c9)

# Conflicts:
#	erpnext/assets/doctype/asset/test_asset.py
2021-12-03 06:02:52 +00:00
GangaManoj
c888904cd2 fix: Modify has_pro_rata() to include existing assets
(cherry picked from commit de002005ac)
2021-12-03 06:02:50 +00:00
GangaManoj
7790c32676 fix: Create Depreciation Schedules properly for existing Assets
(cherry picked from commit 5c3d4caeda)

# Conflicts:
#	erpnext/assets/doctype/asset/asset.py
2021-12-03 06:02:49 +00:00
GangaManoj
a50ecffb69 fix: Fix depreciation_amount calculation
(cherry picked from commit 22cc8d2246)

# Conflicts:
#	erpnext/regional/india/utils.py
2021-12-03 06:02:47 +00:00
Deepesh Garg
6bb2051c11 fix: India utils code cleanup
(cherry picked from commit 56c626adbf)
2021-12-03 04:11:55 +00:00
Deepesh Garg
a5163b0879 fix: Taxes and Charges template not getting copied from Purchase Order/Receipt to Invoice
(cherry picked from commit 6a75e8d283)
2021-12-03 04:11:54 +00:00
Deepesh Garg
10c4874306 Merge pull request #28654 from deepeshgarg007/tax_template_mapping
fix: Taxes and Charges template not getting copied from Purchase Order/Receipt to Invoice
2021-12-03 09:40:54 +05:30
Deepesh Garg
313eb70bfa Merge pull request #28600 from frappe/mergify/bp/version-13-hotfix/pr-28592
fix: do not add gst fields if no indian company (backport #28592)
2021-12-03 09:37:54 +05:30
Deepesh Garg
519394e1fc Merge pull request #28682 from frappe/mergify/bp/version-13-pre-release/pr-28533
fix: misc minor Product Bundle fixes (backport #28533)
2021-12-02 19:14:32 +05:30
Deepesh Garg
a1fa55f41f Merge pull request #28681 from frappe/mergify/bp/version-13-hotfix/pr-28533
fix: misc minor Product Bundle fixes (backport #28533)
2021-12-02 19:13:57 +05:30
Deepesh Garg
8309cbe064 Merge pull request #28627 from deepeshgarg007/accounts_receivable_multi_currency
fix: Paid invoices showing in AR/AP report
2021-12-02 19:13:09 +05:30
Deepesh Garg
c10f4ebe70 Merge branch 'version-13-hotfix' into mergify/bp/version-13-hotfix/pr-28533 2021-12-02 17:18:45 +05:30
Deepesh Garg
f274f4decd Merge branch 'version-13-hotfix' into tax_template_mapping 2021-12-02 17:18:22 +05:30
Deepesh Garg
56c626adbf fix: India utils code cleanup 2021-12-02 17:17:56 +05:30
mergify[bot]
b47322af5a fix: remove change_abbr method (#28692) 2021-12-02 15:31:30 +05:30
Saqib
0808438508 fix: remove change_abbr method (#28691) 2021-12-02 15:00:42 +05:30
mergify[bot]
abfaa4c07e fix: dont requeue repost immediately and clear progress (#28684) (#28690)
(cherry picked from commit a37c99a23d)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-12-02 14:58:24 +05:30
mergify[bot]
0325ed1277 fix: dont requeue repost immediately and clear progress (#28684) (#28689)
(cherry picked from commit a37c99a23d)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-12-02 14:58:17 +05:30
mergify[bot]
e7982a9c9e fix: Make buttons translatable (#28685) 2021-12-02 12:13:50 +05:30
mergify[bot]
b6d752201a fix: actual tax conversion in case of multicurrency invoices (#28686) 2021-12-02 12:13:34 +05:30
GangaManoj
1ec0cd4e5b fix: Add item to packing list
(cherry picked from commit a473e1dbe9)
2021-12-02 03:52:56 +00:00
GangaManoj
1b8a947a18 fix: Remove unnecessary comma
(cherry picked from commit c9743185c6)
2021-12-02 03:52:55 +00:00
GangaManoj
ad96511fba fix: Test Product Bundle price calculation when there are multiple Product Bundles
(cherry picked from commit adfd519139)
2021-12-02 03:52:54 +00:00
GangaManoj
2353fb64d8 fix: Test that indices are reset for Packed/Bundle Items when Product Bundles are removed from the Items table
(cherry picked from commit 325923afc7)
2021-12-02 03:52:54 +00:00
GangaManoj
eb851dd36a fix: Reset indices in the Packed/Bundle Items table on deleting Product Bundles
(cherry picked from commit 8370042f82)
2021-12-02 03:52:53 +00:00
GangaManoj
c9d3fa0649 fix: Fix Product Bundle price calculation when there are multiple Product Bundles
(cherry picked from commit 0803f87660)
2021-12-02 03:52:52 +00:00
GangaManoj
4a38e61345 fix: Add bundle items to PO only if the Product Bundle was selected from the SO
(cherry picked from commit 406278b5c1)
2021-12-02 03:52:51 +00:00
GangaManoj
a16fa09a54 fix: Add item to packing list
(cherry picked from commit a473e1dbe9)
2021-12-02 03:52:04 +00:00
GangaManoj
f38899a28a fix: Remove unnecessary comma
(cherry picked from commit c9743185c6)
2021-12-02 03:52:03 +00:00
GangaManoj
9aab38d242 fix: Test Product Bundle price calculation when there are multiple Product Bundles
(cherry picked from commit adfd519139)
2021-12-02 03:52:02 +00:00
GangaManoj
d2dd51f15b fix: Test that indices are reset for Packed/Bundle Items when Product Bundles are removed from the Items table
(cherry picked from commit 325923afc7)
2021-12-02 03:52:02 +00:00
GangaManoj
cfb6cbbd8c fix: Reset indices in the Packed/Bundle Items table on deleting Product Bundles
(cherry picked from commit 8370042f82)
2021-12-02 03:52:01 +00:00
GangaManoj
e18542ef6a fix: Fix Product Bundle price calculation when there are multiple Product Bundles
(cherry picked from commit 0803f87660)
2021-12-02 03:52:00 +00:00
GangaManoj
e8e0faa23a fix: Add bundle items to PO only if the Product Bundle was selected from the SO
(cherry picked from commit 406278b5c1)
2021-12-02 03:51:59 +00:00
mergify[bot]
742ede7ba4 test: dynamic fiscal year creation in tests (#28667) (#28670)
(cherry picked from commit fdffa037b5)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-12-01 17:53:53 +05:30
mergify[bot]
dd2ce664ea test: dynamic fiscal year creation in tests (#28667) (#28671)
(cherry picked from commit fdffa037b5)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-12-01 17:53:44 +05:30
mergify[bot]
d2a0a554a6 fix(POS Profile): replace cur_frm with frm (#28664) 2021-12-01 15:18:01 +05:30
mergify[bot]
54056b8150 chore: add timeout to GHA workflows (#26714) (#28662)
(cherry picked from commit 0bb60b37df)

Co-authored-by: Ankush <ankush@iwebnotes.com>
2021-12-01 11:24:20 +05:30
mergify[bot]
f599c375ed chore: add timeout to GHA workflows (#26714) (#28661)
(cherry picked from commit 0bb60b37df)

Co-authored-by: Ankush <ankush@iwebnotes.com>
2021-12-01 11:23:40 +05:30
Deepesh Garg
6a75e8d283 fix: Taxes and Charges template not getting copied from Purchase Order/Receipt to Invoice 2021-11-30 20:36:30 +05:30
Ankush Menat
743b8c23ed Merge pull request #28626 from frappe/mergify/bp/version-13-hotfix/pr-28349
feat: Let serialised Items be consumed during Asset Repairs (backport #28349)
2021-11-30 18:51:39 +05:30
mergify[bot]
62c5fd2c4c fix: Unable to search project by project name in Sales Invoice (bp #28648)
(cherry picked from commit 08b7c856b2)

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-11-30 18:43:22 +05:30
Deepesh Garg
1d38040091 Merge pull request #28649 from frappe/mergify/bp/version-13-hotfix/pr-28636
feat: Show Zero Values filter in consolidated financial statement (backport #28636)
2021-11-30 18:40:09 +05:30
Deepesh Garg
08b7c856b2 fix: Unable to search project by project name in Sales Invoice (#28648) 2021-11-30 18:36:56 +05:30
Deepesh Garg
b3d182e782 Merge branch 'version-13-hotfix' into accounts_receivable_multi_currency 2021-11-30 18:20:08 +05:30
Deepesh Garg
f3916c02a8 feat: Show Zero Values filter in consolidated financial statement
(cherry picked from commit 9610086d0c)
2021-11-30 12:46:30 +00:00
mergify[bot]
d711a3883b chore: remove duplicate code (bp #28646)
[skip ci]

(cherry picked from commit 0854c183aa)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-11-30 18:00:54 +05:30
Subin Tom
10c92c45d8 fix: merge conflicts 2021-11-30 16:11:29 +05:30
Subin Tom
f591596615 fix: merge conflicts 2021-11-30 16:06:55 +05:30
mergify[bot]
9975da755b fix: allow creating Shift Assignment for same day (#28613) (#28629)
(cherry picked from commit 4458b24813)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-11-30 14:46:59 +05:30
mergify[bot]
6c5cefb3ac fix: allow creating Shift Assignment for same day (#28613) (#28630)
(cherry picked from commit 4458b24813)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-11-30 14:42:36 +05:30
Subin Tom
b1c1b0ce49 fix: sider issues
(cherry picked from commit e7b4204c35)

# Conflicts:
#	erpnext/public/js/controllers/taxes_and_totals.js
2021-11-30 09:08:52 +00:00
Subin Tom
fcfd6d6f04 fix: fixed tests, separated a method for shipping charges
(cherry picked from commit a8e2c02e14)
2021-11-30 09:08:51 +00:00
Subin Tom
8d0493113a fix: check if shipping rule value exists
(cherry picked from commit af1fce0419)
2021-11-30 09:08:50 +00:00
Subin Tom
edf446e632 fix: calling shipping rule method during net_total calculation in taxes_adn_totals.py
(cherry picked from commit 18ae03d967)
2021-11-30 09:08:50 +00:00
Subin Tom
bf212da25a fix: Shipping Rule picking up old net_rate
(cherry picked from commit c78b8b7897)

# Conflicts:
#	erpnext/public/js/controllers/taxes_and_totals.js
#	erpnext/public/js/controllers/transaction.js
2021-11-30 09:08:50 +00:00
Subin Tom
facaa9cc39 fix: sider issues
(cherry picked from commit e7b4204c35)

# Conflicts:
#	erpnext/public/js/controllers/taxes_and_totals.js
2021-11-30 09:08:17 +00:00
Subin Tom
9e1fd09a64 fix: fixed tests, separated a method for shipping charges
(cherry picked from commit a8e2c02e14)
2021-11-30 09:08:16 +00:00
Subin Tom
d2d8986553 fix: check if shipping rule value exists
(cherry picked from commit af1fce0419)
2021-11-30 09:08:16 +00:00
Subin Tom
e6d0103cf3 fix: calling shipping rule method during net_total calculation in taxes_adn_totals.py
(cherry picked from commit 18ae03d967)
2021-11-30 09:08:15 +00:00
Subin Tom
e65a720810 fix: Shipping Rule picking up old net_rate
(cherry picked from commit c78b8b7897)

# Conflicts:
#	erpnext/public/js/controllers/taxes_and_totals.js
#	erpnext/public/js/controllers/transaction.js
2021-11-30 09:08:15 +00:00
mergify[bot]
3d76afbc7b fix: Employee Transfer and Project Profitability test cases (#28633) (#28640)
* fix: Employee Transfer testcases

* fix: Project Profitability test case

(cherry picked from commit d0f4f03b66)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-11-30 14:26:57 +05:30
mergify[bot]
16ce9dfa12 fix: Employee Transfer and Project Profitability test cases (#28633) (#28639)
* fix: Employee Transfer testcases

* fix: Project Profitability test case

(cherry picked from commit d0f4f03b66)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-11-30 14:26:43 +05:30
mergify[bot]
c69fe4efb4 fix(ux): remove attachment limit from item doctype (backport #28632)
fix(ux): remove attachment limit from item doctype (backport #28632)
2021-11-30 13:48:22 +05:30
Deepesh Garg
5e7ce5370f fix: Paid showing in AR/AP report 2021-11-29 23:53:28 +05:30
rohitwaghchaure
bf62c7634a Merge pull request #28622 from rohitwaghchaure/merge-hotfix-to-pre-release-for-13-16
chore: Merge branch 'version-13-hotfix' into 'version-13-pre-release'
2021-11-29 21:08:49 +05:30
mergify[bot]
b6ffe333b9 fix(regional): hsn_wise as false returns item_code (#28619) 2021-11-29 20:47:56 +05:30
mergify[bot]
20f9b621e4 feat(pos): Total item qty field to POS screen (backport #28331) 2021-11-29 20:46:47 +05:30
GangaManoj
944b995179 fix: Change order of import statements
(cherry picked from commit c94f1ed39a)
2021-11-29 15:13:48 +00:00
GangaManoj
1c643059df fix: Remove unused import
(cherry picked from commit b28f137ee8)
2021-11-29 15:13:48 +00:00
GangaManoj
53eb7bd1c3 fix: Add test for consumption of serialized Assets
(cherry picked from commit 6b75d1439f)
2021-11-29 15:13:47 +00:00
GangaManoj
45f948f575 fix: Create setUpClass
(cherry picked from commit efac7b0904)
2021-11-29 15:13:47 +00:00
GangaManoj
a1f47d8ae0 fix: Create stock item
(cherry picked from commit eea80b6c01)
2021-11-29 15:13:46 +00:00
GangaManoj
7dbf6867d5 fix: Replace 'item' with 'item_code' in tests
(cherry picked from commit c9e79ef1f2)
2021-11-29 15:13:46 +00:00
GangaManoj
b38819aa3f fix: Add serial no to Stock Entry doc to decrease quantity for Stock Items consumed during repair
(cherry picked from commit 1393f97ad5)
2021-11-29 15:13:46 +00:00
GangaManoj
ebd89e1c3d feat: Add 'Add Serial No' button in the Stock Items table
(cherry picked from commit 4668bb4be0)
2021-11-29 15:13:45 +00:00
GangaManoj
246f02d585 fix: Rename item to item_code
(cherry picked from commit abb535540a)
2021-11-29 15:13:45 +00:00
GangaManoj
4b9d1fa0de feat: Add Serial No field
(cherry picked from commit 1aed8c4b2f)
2021-11-29 15:13:44 +00:00
Rohit Waghchaure
ced223188f chore: Merge branch 'version-13-hotfix' into 'version-13-pre-release' 2021-11-29 19:41:48 +05:30
Rohit Waghchaure
db7fbfb5a7 Merge branch 'version-13-pre-release' into version-13 2021-11-29 19:18:12 +05:30
Rohit Waghchaure
f1fb0fc5cb bumped to version 13.15.2 2021-11-29 19:38:12 +05:50
Deepesh Garg
fbe5157e3f Merge pull request #28620 from frappe/mergify/bp/version-13-hotfix/pr-28464
fix:Change QR Code Triggerr event (backport #28464)
2021-11-29 19:15:33 +05:30
Deepesh Garg
6feb0df8e8 Merge pull request #28621 from frappe/mergify/bp/version-13-pre-release/pr-28464
fix:Change QR Code Triggerr event (backport #28464)
2021-11-29 19:15:13 +05:30
Deepesh Garg
ca375b0e8d fix: Move trigger from on trash to on cancel
(cherry picked from commit 4382040fb6)
2021-11-29 13:18:15 +00:00
Mohammed Redah
26932885bb fix:Change QR Code Triggerr event
This fixes the bug if the user changes the date after insertion it will show the wrong values

(cherry picked from commit 9d319c2205)
2021-11-29 13:18:14 +00:00
Deepesh Garg
db5930742d fix: Move trigger from on trash to on cancel
(cherry picked from commit 4382040fb6)
2021-11-29 13:17:34 +00:00
Mohammed Redah
f32ed1bd41 fix:Change QR Code Triggerr event
This fixes the bug if the user changes the date after insertion it will show the wrong values

(cherry picked from commit 9d319c2205)
2021-11-29 13:17:34 +00:00
Deepesh Garg
12a79dc6ac Merge pull request #28609 from frappe/mergify/bp/version-13-hotfix/pr-28556
fix: incorrect discount amount set when item is replaced (backport #28556)
2021-11-29 18:06:19 +05:30
rohitwaghchaure
0628aba0c7 Merge pull request #28616 from frappe/mergify/bp/version-13-hotfix/pr-28611
fix: changed fieldtype from int to float for the field Batch Size in the Work Order Operation table (backport #28611)
2021-11-29 17:49:47 +05:30
Deepesh Garg
fcaebc465e Merge pull request #28614 from frappe/mergify/bp/version-13-hotfix/pr-28605
refactor(KSA VAT): QR Code as per ZATKA specification (backport #28605)
2021-11-29 17:38:47 +05:30
Deepesh Garg
69c0e4dea1 Merge pull request #28612 from frappe/mergify/bp/version-13-pre-release/pr-28605
refactor(KSA VAT): QR Code as per ZATKA specification (backport #28605)
2021-11-29 17:38:26 +05:30
Rohit Waghchaure
1733c1c513 fix: changed fieldtype from int to float for the field Batch Size in the work order
(cherry picked from commit 7fac9b8e9c)
2021-11-29 11:44:25 +00:00
Deepesh Garg
fa54cd31a0 fix: Remove duplicate patch 2021-11-29 16:54:34 +05:30
Deepesh Garg
eeaed9d730 fix: KSA print format for invoices not having item codes
(cherry picked from commit af6fc29770)
2021-11-29 11:17:42 +00:00
Deepesh Garg
63d29b5d01 fix: Translations
(cherry picked from commit f3f7ed6f0d)
2021-11-29 11:17:41 +00:00
Ahmad
7fed860654 fix: KSA VAT QR Code arabic conversion
(cherry picked from commit 31b9b84fdf)
2021-11-29 11:17:40 +00:00
Ahmad
ca0a6c04fb refactor: comments removed
(cherry picked from commit de784d8bfe)
2021-11-29 11:17:40 +00:00
Ahmad
35f4159274 refactor(KSA VAT): QR Code as per ZATKA specification
(cherry picked from commit d1746caa02)
2021-11-29 11:17:39 +00:00
Deepesh Garg
9348fcf6c3 fix: KSA print format for invoices not having item codes
(cherry picked from commit af6fc29770)
2021-11-29 11:17:04 +00:00
Deepesh Garg
3289ba92fa fix: Translations
(cherry picked from commit f3f7ed6f0d)
2021-11-29 11:17:03 +00:00
Ahmad
f2f00ad402 fix: KSA VAT QR Code arabic conversion
(cherry picked from commit 31b9b84fdf)
2021-11-29 11:17:03 +00:00
Ahmad
641043e893 refactor: comments removed
(cherry picked from commit de784d8bfe)
2021-11-29 11:17:02 +00:00
Ahmad
fda69bc0cf refactor(KSA VAT): QR Code as per ZATKA specification
(cherry picked from commit d1746caa02)
2021-11-29 11:17:01 +00:00
Saqib
acb2eec7ed fix: incorrect discount amount set when item is replaced (#28556)
(cherry picked from commit c0cc72ec1d)
2021-11-29 09:35:59 +00:00
mergify[bot]
2cb24c8ec5 fix: Employee Advance paid amount not updated on PE cancellation (#28572) (#28608)
* fix: employee advance paid amount not updated on PE cancellation

* fix: convert raw sql queries to qb

* test: Employee Advance Paid Amount on PE cancellation

* chore: disable no copy for sanctioned amount in Expense Claim

(cherry picked from commit baf41fdc9c)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-11-29 14:44:05 +05:30
Marica
ac2af2d99c Merge pull request #28606 from marination/custom-search
feat: Allow addition of custom product search box
2021-11-29 14:31:49 +05:30
marination
7fec4ab88b fix: search_box_id instead of search_box_class 2021-11-29 14:23:32 +05:30
marination
9ec58dec4d fix: Sider (missing semicolon) 2021-11-29 13:59:45 +05:30
marination
ae27bbe3c0 feat: Allow addition of custom search box
- allow passing custom search box class to bind search actions on
- this allows users to inject and get a custom search box running on any page
2021-11-29 13:47:14 +05:30
Ankush Menat
d270b320f1 chore: correct docstring
[skip ci]
2021-11-29 13:37:00 +05:30
Ankush Menat
2768047c9b fix: use get_all instead of get_list for child tables
(cherry picked from commit f862339024)
2021-11-29 13:37:00 +05:30
Deepesh Garg
243022e166 fix: Conflicts 2021-11-29 11:33:52 +05:30
Himanshu
cd4adaf0b5 Delete __init__.py
(cherry picked from commit de6f104b74)
2021-11-29 03:57:45 +00:00
hrwx
3b75f09462 fix: do not add gst fields if no indian company
(cherry picked from commit 43038aab79)

# Conflicts:
#	erpnext/patches.txt
2021-11-29 03:57:41 +00:00
mergify[bot]
3621ee234e fix(ux): allow translations (#28455) (#28590)
* Translation

* Translations

(cherry picked from commit cdaf0a04cf)

Co-authored-by: xdlumertz <alexandrelumertz@gmail.com>
2021-11-27 15:11:25 +00:00
mergify[bot]
44cdedf9a2 fix: better validation for Integration Request (#28540) 2021-11-27 16:32:04 +05:30
mergify[bot]
965bfa5c62 fix: incorrect balance for warehouses (#28583) (#28584)
(cherry picked from commit 7ff30a4b2b)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2021-11-26 17:36:26 +05:30
Deepesh Garg
e6b3becfbb Merge pull request #28581 from frappe/mergify/bp/version-13-hotfix/pr-27348
fix (refactor): Tax Withholding for Advances using Payment Entry against suppliers (backport #27348)
2021-11-26 14:50:12 +05:30
Deepesh Garg
03449a09ce fix: Incorrect indentation
(cherry picked from commit 7f06c8ca57)
2021-11-26 08:59:30 +00:00
Deepesh Garg
125ce5dd6d fix: Add tests
(cherry picked from commit f07f010962)
2021-11-26 08:59:30 +00:00
Deepesh Garg
31f95bd5d1 fix(refactor): Advance tds allocation to purchase invoice
(cherry picked from commit 5ba3b28d69)
2021-11-26 08:59:30 +00:00
Deepesh Garg
e2956922dc fix: GL Entries on advance TDS allocation
(cherry picked from commit 25d208aa8a)
2021-11-26 08:59:29 +00:00
mergify[bot]
cf5cb70f35 fix: Use get_all instead of get_list for child doctype (#28538) (#28577)
* fix(Student Attendance Tool): Use `get_all` instead of `get_list` for child doctype

* fix(Course Schedule): incorrect fetch from value

* fix: sider

* fix(Gratuity): Use `get_all` instead of `get_list` for child doctype

(cherry picked from commit ca8dec0cf2)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-11-26 14:01:04 +05:30
mergify[bot]
875b924279 fix: Customer, Supplier heatmap data not rendering (#28553) (#28575)
* fix: adding get_timeline_data import on supplier.py, customer.py

(cherry picked from commit 2a5f663a1e)

Co-authored-by: Shariq Ansari <30859809+shariquerik@users.noreply.github.com>
2021-11-26 13:37:09 +05:30
mergify[bot]
b9218b3c60 fix: over billing validation (#28573) 2021-11-26 12:46:49 +05:30
Rohit Waghchaure
a0579ece92 Merge branch 'version-13-pre-release' into version-13 2021-11-26 12:38:51 +05:30
Rohit Waghchaure
652b7393dc bumped to version 13.15.1 2021-11-26 12:58:50 +05:50
mergify[bot]
eac67db985 fix: checkbox triggers get_items and sub_assembly buttons (#28558) (#28571)
(cherry picked from commit 73bfd59846)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2021-11-26 11:54:54 +05:30
mergify[bot]
c4262210c1 fix: total stock summary UI glitch #28564 (#28566)
fix: total stock summary UI glitch
(cherry picked from commit 87f2dcfb59)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-11-25 19:40:48 +05:30
Marica
90049ffff5 Merge pull request #28557 from frappe/mergify/bp/version-13-hotfix/pr-28123
fix: Remove RM Cost column as cost is not retrievable from Job card (backport #28123)
2021-11-25 19:09:08 +05:30
Marica
66f02b0817 Merge branch 'version-13-hotfix' into mergify/bp/version-13-hotfix/pr-28123 2021-11-25 18:46:56 +05:30
Ankush Menat
479259c1ae Merge pull request #28560 from frappe/mergify/bp/version-13-hotfix/pr-28124
refactor: item-warehouse based reposting (backport #28124)
2021-11-25 18:07:27 +05:30
Ankush Menat
12e1d169d0 Merge branch 'version-13-hotfix' into mergify/bp/version-13-hotfix/pr-28124 2021-11-25 17:48:37 +05:30
Ankush Menat
fbfaf75b66 chore: remove __future__ py2 compatibility imports 2021-11-25 17:42:24 +05:30
Ankush Menat
16682e452d fix: patch failure due to new doctype
(cherry picked from commit 2b3404435b)
2021-11-25 17:40:58 +05:30
Ankush Menat
ccb8defc0b fix: ignore permissions while creating reposts
(cherry picked from commit 0a2964dc82)
2021-11-25 16:43:13 +05:30
Ankush Menat
1c485a8ae4 refactor: deduplicate during repost background job
(cherry picked from commit ed94f0f3f2)
2021-11-25 16:43:06 +05:30
Ankush Menat
2b8950243a test: item-wh deduplication in reposting
(cherry picked from commit 55631dd0d6)
2021-11-25 11:08:14 +00:00
Ankush Menat
d55aac26ce perf: skip unnecessary item-wh reposts
Using basic idea that repost with older posting date will also take care
of subsequent posting dates...

When Item-WH reposts are queued:

1. If another repost with same item-wh but older posting date exists
    then skip current one.
2. If another repost with same item-wh but newer posting date exists
    then skip another one.

(cherry picked from commit 0d0e24a5f5)
2021-11-25 11:08:13 +00:00
Ankush Menat
3e9d639fb5 fix: dont erase voucher_type and voucher_no for item_wh repost
kept for tracability.

(cherry picked from commit 1d3842f03a)
2021-11-25 11:08:12 +00:00
Ankush Menat
21f64e5eba perf: index for item-sh on repost item valuation
Item-WH based reposting requires querying existing similar repost.
Assuming there is only 1 max extra entry with same params just indexing
item-WH is sufficient to speed up the query.

(cherry picked from commit a5a8c9104f)
2021-11-25 11:08:11 +00:00
Ankush Menat
7ae5bc8911 feat: option to select reposting method
In current implementation selecting Item-Warehouse based reposting is
better for few users, who don't use depenent SLEs but have frequent
transactions involving same items.

This change lets them switch to item-warehouse based reposting if
required.

Only use this if you understand technicalities of stock reposting. This
is experimental but will become mainstream in coming days.

(cherry picked from commit 45dd46be3d)
2021-11-25 11:08:10 +00:00
Ankush Menat
db22859b54 refactor: reuse get_items_to_be_repost function
(cherry picked from commit d220e08ba4)
2021-11-25 11:08:09 +00:00
Ankush Menat
876c85fbf7 test: item-wh repost creation
(cherry picked from commit a36c249d3d)
2021-11-25 11:08:09 +00:00
Ankush Menat
0032ee46be refactor: item-wh wise reposting by default
(cherry picked from commit 6dc9b822bc)
2021-11-25 11:08:08 +00:00
Saqib
80d0b6ddc8 revert: "feat: Accounts, Selling & Assets Onboarding cleanup (#28491)" (#28559) 2021-11-25 16:36:29 +05:30
marination
9fa8d02184 fix: Remove commented code
(cherry picked from commit 42395af22a)
2021-11-25 09:06:24 +00:00
marination
e47f7a3023 chore: Add comment hinting to reason
(cherry picked from commit 8502ccb5b2)
2021-11-25 09:06:24 +00:00
marination
8e9cd83c4b fix: Remove RM Cost column as cost is not retrievable from Job card
(cherry picked from commit 27236b7e9e)
2021-11-25 09:06:23 +00:00
mergify[bot]
46df181d00 fix: do not get password if client_secret is not set (#28554) 2021-11-25 13:45:44 +05:30
Saqib
5589e189b5 fix: do not get password if client_secret is not set (#28547) 2021-11-25 12:05:29 +05:30
Ankush Menat
88a8bc7ebc test: shopify test custom field creation failing (#28544) 2021-11-24 17:20:38 +05:30
mergify[bot]
32855073ff fix: fixes in work order doctype (#28217) (#28543)
* fix: fixes in work order doctype

* fix: sider issues and disabled set only once property

* fix: set default qty to manufacture

* fix: dont manually collapse sections

* fix: remove unnecessary messages

* fix: make dependent fields read only


Co-authored-by: Mohammed Yusuf Shaikh <49878143+mohammedyusufshaikh@users.noreply.github.com>
Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-11-24 16:44:20 +05:30
mergify[bot]
b8c867a4bc fix: correct module for reloading doc (#28526)
(cherry picked from commit 0a6021e854)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-11-23 18:20:36 +05:30
Bhavesh Maheshwari
7ae1369d64 fix: broken bom tree view and remove duplicate button (#28512)
* fix: broken bom tree view and remove duplicate button

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-11-23 17:51:13 +05:30
Akash Krishna
34deab5b71 fix: Healthcare Practitioner - query (#28303) 2021-11-23 17:48:50 +05:30
mergify[bot]
623cef1032 fix: Replace 'parent' with 'invoice_or_item' (#28516) 2021-11-23 14:02:54 +05:30
mergify[bot]
b7c63212cd fix: POS Item cart only taxes with amount displayed (#28515) 2021-11-23 11:41:24 +05:30
mergify[bot]
adcf906d1c fix: Employee link formatter showing incorrect value for Employee Name (#28504) (#28514)
(cherry picked from commit 5ba1bc1572)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-11-23 09:39:10 +05:30
mergify[bot]
294de89b9b fix(UX): Allocated Amount in Advances not updated on updating expense amount in Expense Claim (#28497) (#28505)
* fix(UX): Allocated Amount in Advances not updated on updating expense amount in Expense Claim

* fix: Expense Claim Advance form labels

(cherry picked from commit e7eef9601d)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-11-23 08:52:31 +05:30
Rohit Waghchaure
c92dfa988e Merge branch 'version-13-pre-release' into version-13 2021-11-22 22:50:39 +05:30
Rohit Waghchaure
d03bc7d8dc bumped to version 13.15.0 2021-11-22 23:10:38 +05:50
rohitwaghchaure
742249b6c9 Merge pull request #28508 from rohitwaghchaure/change-log-for-v13-15
chore: change log for v13.15.0
2021-11-22 22:48:43 +05:30
Rohit Waghchaure
24c21c7f49 chore: change log for v13.15.0 2021-11-22 22:45:58 +05:30
rohitwaghchaure
c48f60e6e2 Merge pull request #28506 from frappe/revert-28499-mergify/bp/version-13-pre-release/pr-28491
revert: "feat: Accounts, Selling & Assets Onboarding cleanup #28499"
2021-11-22 22:31:54 +05:30
Saqib
8824712feb Revert "feat: Accounts, Selling & Assets Onboarding cleanup (#28499)"
This reverts commit 145bcbaa6d.
2021-11-22 20:26:44 +05:30
Deepesh Garg
3b2b9ce70c Merge pull request #28503 from frappe/mergify/bp/version-13-pre-release/pr-28469
fix: FY query returning None for new company (backport #28469)
2021-11-22 20:20:17 +05:30
Deepesh Garg
fe94ec6036 Merge pull request #28502 from frappe/mergify/bp/version-13-hotfix/pr-28469
fix: FY query returning None for new company (backport #28469)
2021-11-22 20:20:07 +05:30
Subin Tom
953f46e289 fix: FY query returning None for new company
(cherry picked from commit 350ed1a6c2)
2021-11-22 13:54:11 +00:00
Subin Tom
b68d5f86f9 fix: FY query returning None for new company
(cherry picked from commit 350ed1a6c2)
2021-11-22 13:53:44 +00:00
mergify[bot]
761bd8c97b fix: KSA Invoice print format for multicurrency invoices (#28495) 2021-11-22 18:25:37 +05:30
mergify[bot]
3bdf5c8673 fix: KSA Invoice print format for multicurrency invoices (#28496) 2021-11-22 18:25:21 +05:30
mergify[bot]
145bcbaa6d feat: Accounts, Selling & Assets Onboarding cleanup (#28499) 2021-11-22 18:24:51 +05:30
mergify[bot]
358205b177 feat: Accounts, Selling & Assets Onboarding cleanup (#28491) 2021-11-22 16:45:23 +05:30
Anupam Kumar
295dc32bd2 Merge pull request #28436 from anupamvs/crm-lead-validate-cleanup
fix: lead validate function cleanup
2021-11-22 14:43:47 +05:30
Anupam Kumar
08717192c7 Merge branch 'version-13-hotfix' into crm-lead-validate-cleanup 2021-11-22 14:43:34 +05:30
mergify[bot]
b6b45c6275 fix: POS string translation (#28490) 2021-11-22 13:58:47 +05:30
mergify[bot]
dff3decd56 fix: Closed status error in Work Order Summary (backport #28460)
* fix: Closed status error in Work Order Summary (#28460)

* fix: Closed status error in Work Order Summary

* chore: use get_meta to get status options

* refactor: simplify code

Co-authored-by: Ankush Menat <ankush@frappe.io>
(cherry picked from commit aa689874e3)

# Conflicts:
#	erpnext/manufacturing/report/work_order_summary/work_order_summary.py

* fix: resolve conflict

Co-authored-by: Sagar Sharma <63660334+s-aga-r@users.noreply.github.com>
Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-11-22 13:24:25 +05:30
mergify[bot]
1b4659f028 fix: Closed status error in Work Order Summary (backport #28460)
* fix: Closed status error in Work Order Summary (#28460)

* fix: Closed status error in Work Order Summary

* chore: use get_meta to get status options

* refactor: simplify code

Co-authored-by: Ankush Menat <ankush@frappe.io>
(cherry picked from commit aa689874e3)

# Conflicts:
#	erpnext/manufacturing/report/work_order_summary/work_order_summary.py

* fix: resolve conflict

Co-authored-by: Sagar Sharma <63660334+s-aga-r@users.noreply.github.com>
Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-11-22 13:23:22 +05:30
Saqib
2a7ca32296 Merge pull request #28480 from frappe/mergify/bp/version-13-hotfix/pr-28402
fix: Gross Profit report totals (backport #28402)
2021-11-22 13:15:30 +05:30
mergify[bot]
d8025b37cd feat: create party link from customer/supplier (#28481) 2021-11-22 13:15:12 +05:30
mergify[bot]
464428b15a fix: cost center wise ledger posting for pcv (#28482) 2021-11-22 13:14:53 +05:30
mergify[bot]
7c731147ba fix: Add extra column to display Invoice or Item when grouped by Invoice (#28483) 2021-11-22 13:14:38 +05:30
Ankush Menat
f4797ac5e3 fix: don't use cached doc while reposting
(cherry picked from commit c436e30ee6)
2021-11-22 13:08:21 +05:30
Ankush Menat
636a6fcae0 fix: ignore permissions while creating repost
If user reached this code then they already have permission to create
stock transaction, hence ignore permission checks while
creating/cancelling repost item valuation entries.

(cherry picked from commit aa024fc9da)
2021-11-22 13:08:21 +05:30
Ankush Menat
1267543064 fix: restrict repost valuation to manager roles
(cherry picked from commit 42f1dd98dd)
2021-11-22 13:08:21 +05:30
Anupam Kumar
3fa8b8956f Merge branch 'version-13-hotfix' into crm-lead-validate-cleanup 2021-11-22 13:04:18 +05:30
mergify[bot]
705319e563 fix: Filter out cancelled and non-depreciable Assets in Asset Value Adjustment (#28478) 2021-11-22 12:22:16 +05:30
mergify[bot]
c3c35c5ab5 fix: add child button in coa tree (#28479) 2021-11-22 12:21:56 +05:30
GangaManoj
46621bc3b1 fix: Replace 'Totals' with 'Total'
(cherry picked from commit 1affa12b74)
2021-11-22 06:51:55 +00:00
GangaManoj
53d1733162 fix: Display totals row in bold
(cherry picked from commit 508a2301ee)
2021-11-22 06:51:55 +00:00
GangaManoj
e9f599de5d fix: Remove unnecessary condition
(cherry picked from commit c7ffe3a7b4)
2021-11-22 06:51:54 +00:00
GangaManoj
85bf2574be fix: Add totals row when Grouped By Invoice
(cherry picked from commit 582a7ae964)
2021-11-22 06:51:54 +00:00
GangaManoj
826d4051a8 fix: Remove default Totals row
(cherry picked from commit 3aaf7cb408)
2021-11-22 06:51:54 +00:00
mergify[bot]
063d474cd0 refactor!: remove abbreviation renaming (#28441) 2021-11-22 11:36:56 +05:30
mergify[bot]
e40d63dc13 fix(e-invoicing): totals validation of e-invoices (#28476) 2021-11-22 11:23:33 +05:30
Deepesh Garg
707c41af3b Merge pull request #28475 from frappe/mergify/bp/version-13-hotfix/pr-28471
fix: bug with qrcode generation due to default print format name (backport #28471)
2021-11-22 11:17:10 +05:30
Deepesh Garg
2a165d6250 Merge pull request #28474 from frappe/mergify/bp/version-13-pre-release/pr-28471
fix: bug with qrcode generation due to default print format name (backport #28471)
2021-11-22 11:16:53 +05:30
Saqib
5266b34010 fix(e-invoicing): totals validation of e-invoices (#28418) 2021-11-22 10:57:05 +05:30
Saqib Ansari
9d58613159 fix: bug with qrcode generation due to default print format name
(cherry picked from commit ac27391a1f)
2021-11-22 05:08:36 +00:00
Saqib Ansari
2c6d973dd6 fix: bug with qrcode generation due to default print format name
(cherry picked from commit ac27391a1f)
2021-11-22 05:08:15 +00:00
mergify[bot]
cca51f5a6e fix: coa balance rendering bug (#28472) 2021-11-20 15:47:02 +05:30
Deepesh Garg
007057e5f2 Merge pull request #28462 from frappe/mergify/bp/version-13-pre-release/pr-28459
fix(India): GST category not getting auto updated (backport #28459)
2021-11-19 13:06:29 +05:30
Deepesh Garg
08207242c1 fix: Add test for gst category check
(cherry picked from commit cdbc991e3f)
2021-11-19 06:52:22 +00:00
Deepesh Garg
24c113bf68 fix(India): GST category not getting auto updated
(cherry picked from commit f8a26a9fac)
2021-11-19 06:52:22 +00:00
Deepesh Garg
b4f20a43d8 Merge pull request #28459 from deepeshgarg007/gst_category_set_fix
fix(India): GST category not getting auto updated
2021-11-19 12:21:12 +05:30
Deepesh Garg
cdbc991e3f fix: Add test for gst category check 2021-11-19 11:58:44 +05:30
Deepesh Garg
f8a26a9fac fix(India): GST category not getting auto updated 2021-11-19 11:03:13 +05:30
Marica
4a4b327026 Merge pull request #28412 from frappe/mergify/bp/version-13-hotfix/pr-28269
refactor:  (ux) Accepted/Rejected/Received Qty UX (backport #28269)
2021-11-18 15:40:15 +05:30
marination
1d706fd0f7 fix: (server test) Missing variable declaration 2021-11-18 15:19:12 +05:30
Ankush Menat
5052989957 test: basic test for serialize reco cancel
(cherry picked from commit ed99aca36f)
2021-11-18 14:35:36 +05:30
Ankush Menat
098d6ccedf fix: can not cancel stock reconciliation with sr no
(cherry picked from commit 8c85012a70)
2021-11-18 14:35:36 +05:30
Ankush Menat
bceeb0f751 test: basic test for serialize reco cancel
(cherry picked from commit ed99aca36f)
2021-11-18 14:35:13 +05:30
Ankush Menat
cf9397eea0 fix: can not cancel stock reconciliation with sr no
(cherry picked from commit 8c85012a70)
2021-11-18 14:35:13 +05:30
mergify[bot]
6fdd5e990a chore: remove manual collapsing of section (#28435) (#28451)
(cherry picked from commit 8102e4a210)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-11-18 14:14:44 +05:30
mergify[bot]
840256ee31 chore: remove manual collapsing of section (#28435) (#28450)
(cherry picked from commit 8102e4a210)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-11-18 14:12:27 +05:30
mergify[bot]
a60c64857a fix: unchecking the "With Operations" in BOM clears operations table (backport #28446) (#28447)
* fix: unchecking the "With Operations" in BOM clears operations table #28446

(cherry picked from commit 488d34af1f)

# Conflicts:
#	erpnext/manufacturing/doctype/bom/bom.js

* fix: resolve conflict

Co-authored-by: Sagar Sharma <63660334+s-aga-r@users.noreply.github.com>
Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-11-18 14:11:45 +05:30
Anupam Kumar
9346398e19 Merge branch 'version-13-hotfix' into crm-lead-validate-cleanup 2021-11-18 10:38:32 +05:30
Ankush Menat
38d956f9f9 Merge branch 'version-13-hotfix' into mergify/bp/version-13-hotfix/pr-28269 2021-11-17 19:38:57 +05:30
mergify[bot]
3359c547d6 fix: (style) Warehouse Capacity Dashboard UI (#28438)
- Made refresh button icon visible
- Edit Capacity button size and alignment
- Medium font on dashboard

(cherry picked from commit 23486a929d)

Co-authored-by: marination <maricadsouza221197@gmail.com>
2021-11-17 19:37:38 +05:30
mergify[bot]
b4db3362e0 fix: added job_card_item link in material request (#28222) (#28434)
* fix: added job_card_item links in material request

* fix: add no copy to row references

(cherry picked from commit cb064b06ad)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2021-11-17 19:37:20 +05:30
mergify[bot]
b961ad6789 fix: added job_card_item link in material request (#28222) (#28433)
* fix: added job_card_item links in material request

* fix: add no copy to row references

(cherry picked from commit cb064b06ad)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2021-11-17 19:37:08 +05:30
Anupam
8343a1d81e fix: linter issue 2021-11-17 18:27:58 +05:30
Anupam
b876d5b328 fix: linter issue 2021-11-17 18:24:32 +05:30
Anupam
dbda20a71f Merge branch 'crm-lead-validate-cleanup' of github.com:anupamvs/erpnext into crm-lead-validate-cleanup 2021-11-17 17:45:13 +05:30
Anupam
00b1d33ec6 fix: linter issue 2021-11-17 17:44:42 +05:30
Anupam Kumar
498d5403d5 Merge branch 'version-13-hotfix' into crm-lead-validate-cleanup 2021-11-17 17:37:56 +05:30
Anupam
01c1f2529e fix: lead validate function cleanup 2021-11-17 17:33:48 +05:30
rohitwaghchaure
31be9aa8be Merge pull request #28429 from frappe/mergify/bp/version-13-hotfix/pr-28417
fix: currency wise pricing rule not working (backport #28417)
2021-11-17 14:39:08 +05:30
rohitwaghchaure
16b90688bb Merge pull request #28430 from frappe/mergify/bp/version-13-pre-release/pr-28417
fix: currency wise pricing rule not working (backport #28417)
2021-11-17 14:38:51 +05:30
Rohit Waghchaure
c118fa1ada fix: currency wise pricing rule not working
(cherry picked from commit 43aeb541c2)
2021-11-17 08:33:33 +00:00
Rohit Waghchaure
b3a86976a1 fix: currency wise pricing rule not working
(cherry picked from commit 43aeb541c2)
2021-11-17 08:33:08 +00:00
rohitwaghchaure
801e6df37a Merge pull request #28426 from frappe/mergify/bp/version-13-pre-release/pr-28425
fix: performance issue while submitting the Journal Entry (backport #28425)
2021-11-17 13:34:30 +05:30
rohitwaghchaure
c7cfce7628 Merge pull request #28427 from frappe/mergify/bp/version-13-hotfix/pr-28425
fix: performance issue while submitting the Journal Entry (backport #28425)
2021-11-17 13:33:48 +05:30
Rohit Waghchaure
7a76db4335 fix: performance to submit the JV
(cherry picked from commit 7472760ea3)
2021-11-17 07:26:52 +00:00
Rohit Waghchaure
70a130e78d fix: performance to submit the JV
(cherry picked from commit 7472760ea3)
2021-11-17 07:25:29 +00:00
rohitwaghchaure
af251e439a Merge pull request #28419 from rohitwaghchaure/merge-hotfix-to-pre-release-for-13-15
chore: Merge branch 'version-13-hotfix' into 'version-13-pre-release'
2021-11-16 22:37:01 +05:30
Rohit Waghchaure
d556645455 Merge branch 'version-13-hotfix' into 'version-13-pre-release' 2021-11-16 21:25:53 +05:30
Marica
e6451a3a85 Merge pull request #28414 from frappe/mergify/bp/version-13-hotfix/pr-28228
fix: Pull only Items that are in Job Card in a Stock Entry against Job Card (backport #28228)
2021-11-16 19:09:13 +05:30
marination
af430bb590 fix: Merge conflicts 2021-11-16 18:58:36 +05:30
marination
a34eae7bc7 fix: test_job_card_partial_material_transfer test
- Use a specific BOM for JC tests
- Utility to create said BOM
- Sider: unused variable

(cherry picked from commit a5f8274d79)
2021-11-16 13:08:31 +00:00
marination
d086039f1b fix: Server side test
- make `tests_that_skip_setup` a tuple (added comma)
- remove manual teardown in `test_job_card_material_transfer_correctness` to avoid premature committing
- transfer_material_against = "Job Card" while making BOM with mulitple operations

(cherry picked from commit bb561ba7a8)
2021-11-16 13:08:30 +00:00
marination
619c066f67 fix: (travis) Production Plan Summary Report breaks if no WO
- `get_cached_value` throws a DoesNotExistError if non-existent value, used `get_value` instead
- accomodate production plan items that dont have WO/PO against them as well (blank values)
- added some None value handling to avoid AttributeError

(cherry picked from commit 1eb3ca2b86)
2021-11-16 13:08:29 +00:00
marination
0ee54b0779 fix: Partial Trabsfers against JC
- Fixed transferred qty not back updating on JC if partial transfer
- Partial transfer not mapping pending qty from JC correctly in SE
- tests for above cases
- minor code cleanup

(cherry picked from commit e8d0c25dff)
2021-11-16 13:08:28 +00:00
marination
e3dcccdd18 test: Stock Entry from JC correctness (items mapping and qty)
(cherry picked from commit 0aa237f38c)
2021-11-16 13:08:26 +00:00
marination
f3c562bd5b fix: Pull Items that are in JC in Stock Entry against JC
- Check if items pulled in stock entry are present in Job Card
- Code cleanup and removed redundant checks

Co-authored-by: Gavin D'souza <gavin18d@gmail.com>
(cherry picked from commit 3da03028f3)
2021-11-16 13:08:24 +00:00
mergify[bot]
0c65206d69 fix: POS idx issue in taxes table while merging (#28411) 2021-11-16 18:19:57 +05:30
marination
7bc705fb3c fix: Sider, Linter and Server Side Test
- Fix Server side PR test
- linter: re-arrange imports
- sider: avoid single line multi statement
- Code cleanup: Improve code readability and avoid horizontal scroll in test_purchase_receipt
- Removed unused variables in test_purchase_receipt

(cherry picked from commit 293f6cbafd)

# Conflicts:
#	erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
2021-11-16 12:43:33 +00:00
marination
d83038a2ff test: Purchase Invoice Received Qty
(cherry picked from commit e9c75d6eea)
2021-11-16 12:43:31 +00:00
marination
149da71f6d test: Purchase Receipt Received Qty
(cherry picked from commit 05ec7cce82)
2021-11-16 12:43:31 +00:00
marination
852b2e3af8 fix: Sider + Fields UX
- remove extra space (sider)
- PR: Bring rejected qty in grid view
- PI: Rename `Stock Qty` to `Accepted Qty in Stock UOM`
- PI: Move `Accepted Qty in Stock UOM` under Stock UOM

(cherry picked from commit afe1c45f7f)
2021-11-16 12:43:30 +00:00
marination
4441f4d93a refactor: (ux) Accepted/Rejected/Received Qty UX
(cherry picked from commit 5fb5a757cf)

# Conflicts:
#	erpnext/public/js/controllers/buying.js
2021-11-16 12:43:29 +00:00
mergify[bot]
09251b3ddf refactor: fix help section background in dark mode (#28406) (#28408)
(cherry picked from commit 952fc87c99)

Co-authored-by: Ahmed Shareef <46922290+penieldev@users.noreply.github.com>
2021-11-16 14:32:23 +05:30
rohitwaghchaure
55c13a9917 Merge pull request #28407 from frappe/mergify/bp/version-13-hotfix/pr-28398
fix: Pricing Rule not created against the Promotional Scheme (backport #28398)
2021-11-16 14:17:26 +05:30
Rohit Waghchaure
1837204ab0 fix: Pricing Rule not created against the Promotional Scheme
(cherry picked from commit d82910b08a)
2021-11-16 08:25:06 +00:00
mergify[bot]
2c9b995c71 fix: remove item-item group name validation (#28392) (#28399)
(cherry picked from commit 043e3255d6)

Co-authored-by: Rohan <Alchez@users.noreply.github.com>
2021-11-15 20:01:37 +05:30
mergify[bot]
c1a1e9c399 fix: don't make naming series mandatory for items (backport #28394) (#28396)
* fix: don't make naming series mandatory for items

Item variants are an exception, hence this needs to be checked
conditionally.

(cherry picked from commit 7fcaeca403)

* fix: patch for naming series property setter

(cherry picked from commit 54184e54ed)

# Conflicts:
#	erpnext/patches.txt

* fix: conflicts

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-11-15 18:56:15 +05:30
mergify[bot]
2899394bcf fix: Work order creation from sales order (#28388) (#28391)
* fix: Work order creation from sales order

* chore: formatting

Co-authored-by: Ankush Menat <ankushmenat@gmail.com>
(cherry picked from commit 2eccb7a1ca)

Co-authored-by: Sagar Sharma <63660334+s-aga-r@users.noreply.github.com>
2021-11-15 16:10:28 +05:30
mergify[bot]
11f4e1cca3 perf(minor): general ledger report (#28355) 2021-11-15 13:49:58 +05:30
Rohit Waghchaure
575d41c024 Merge branch 'version-13-pre-release' into version-13 2021-11-12 23:34:56 +05:30
Rohit Waghchaure
7fc2f24470 bumped to version 13.14.1 2021-11-12 23:54:56 +05:50
mergify[bot]
d44cab3926 fix: validate hmac unconditionally (#28372) (#28374)
(cherry picked from commit c0f06bc8e3)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-11-12 14:53:27 +05:30
mergify[bot]
68ff68a357 fix: Collapse Scrap Items in Job Card (backport #28362) (#28368)
* fix: Collapse Scrap Items in Job Card (#28362)

(cherry picked from commit a424310581)

# Conflicts:
#	erpnext/manufacturing/doctype/job_card/job_card.json

* fix: resolve conflict

Co-authored-by: Sagar Sharma <63660334+s-aga-r@users.noreply.github.com>
Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-11-12 14:41:00 +05:30
mergify[bot]
4c99f7159d fix(M-Pesa): validate type before executing get_doc (#28369) (#28373)
(cherry picked from commit 6d3e9bce5f)

Co-authored-by: Sagar Vora <sagar@resilient.tech>
2021-11-12 14:39:47 +05:30
mergify[bot]
731f0d71b9 fix(WooCommerce): always expect signature in webhook requests (#28367)
(cherry picked from commit 24b048925b)

Co-authored-by: Sagar Vora <sagar@resilient.tech>
2021-11-12 14:09:53 +05:30
Deepesh Garg
399c0a6452 Merge pull request #28365 from frappe/mergify/bp/version-13-hotfix/pr-28363
fix: Default party account getting overriden in invoices (backport #28363)
2021-11-12 13:38:41 +05:30
Deepesh Garg
2747f263c7 Merge pull request #28366 from frappe/mergify/bp/version-13-pre-release/pr-28363
fix: Default party account getting overriden in invoices (backport #28363)
2021-11-12 13:38:28 +05:30
mergify[bot]
350274edb9 fix: commision rate not fetch from sales person (#28350) 2021-11-12 13:14:22 +05:30
Deepesh Garg
b0a58f4111 fix: Default party account getting overriden in invoices
(cherry picked from commit 88648570d7)
2021-11-12 07:35:03 +00:00
Deepesh Garg
a9452f1277 fix: Default party account getting overriden in invoices
(cherry picked from commit 88648570d7)
2021-11-12 07:34:40 +00:00
Ankush Menat
da64d0b0f9 fix: workspace links to ecommerce settings (#28360) 2021-11-12 10:54:31 +05:30
mergify[bot]
fc5372f201 fix: Unable to edit supplier scorecard criteria name once created (#28348) (#28352)
(cherry picked from commit 944bf8da71)

Co-authored-by: Sagar Sharma <63660334+s-aga-r@users.noreply.github.com>
2021-11-11 20:12:06 +05:30
Deepesh Garg
0f92c68e70 Merge pull request #28340 from frappe/mergify/bp/version-13-hotfix/pr-28334
fix(India): Sales Invoice with duplicate items not showing correct taxable value (backport #28334)
2021-11-11 12:55:48 +05:30
Deepesh Garg
1edafd04fc fix(India): Sales Invoice with duplicate items not showing correct taxable value
(cherry picked from commit 0dca97eb9f)
2021-11-11 06:09:44 +00:00
Deepesh Garg
279ccece57 Merge pull request #28333 from nemesis189/dispatch-address-not-visible-v13
fix: Dispatch address details not displayed in v13
2021-11-11 10:58:19 +05:30
Subin Tom
8ed909da3f fix: Dispatch address details not displayed in v13 2021-11-10 20:36:31 +05:30
Saqib
6661cc7703 fix(pos): get mode of payments query (#28323) 2021-11-10 13:38:21 +05:30
mergify[bot]
eb5320b885 fix(pos): get mode of payments query (#28321) (#28325)
(cherry picked from commit 6d05bb5274)

Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
2021-11-10 13:37:35 +05:30
Ankush Menat
5f29cd8685 fix: default value for allow neg stock in repost_item_valuation
Negative stock can be toggled back after queuing transactions, this
causes failure when repost is executed.

Now allow_negative_stock stock is set at time of queuing the repost job.
This means setting changes done afterwards won't affect already
submitted reposts.

(cherry picked from commit 12e81df2b7)
2021-11-10 13:32:01 +05:30
mergify[bot]
a40b21cd20 fix(Bank Reconciliation): get credit amount for bank account of type liability (#28319) 2021-11-10 12:57:57 +05:30
Ankush Menat
c04c2108f3 fix: ignore cancelled entries in incorrect balance qty report
(cherry picked from commit e498389b00)
2021-11-10 12:13:02 +05:30
Rohit Waghchaure
ab904c22cc Merge branch 'version-13-pre-release' into version-13 2021-11-09 20:16:01 +05:30
Rohit Waghchaure
6b77bac7da bumped to version 13.14.0 2021-11-09 20:36:00 +05:50
rohitwaghchaure
b9da89a90b Merge pull request #28305 from rohitwaghchaure/change-log-for-v13-14-0
chore: Added change log for version 13.14.0
2021-11-09 20:13:44 +05:30
Rohit Waghchaure
f3cfb93a5f chore: Added change log for version 13.14.0 2021-11-09 20:09:09 +05:30
mergify[bot]
fa2f1348ec fix(India setup): setup company independent fixtures for patch (#28304)
(cherry picked from commit 88b5bda34b)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-11-09 19:50:14 +05:30
Wolfram Schmidt
c7f75aad79 fix: add Email option to contact email field (#28296)
* Update warranty_claim.json

Added the Email in option field of Contact Email so you are able to create a notification mapping to this field as reciever.

* Update warranty_claim.json

(cherry picked from commit 6907ad8adb)
2021-11-09 18:37:54 +05:30
Ankush Menat
b45d9065da fix: patch to update job card status
(cherry picked from commit ccf84ae88a)
2021-11-09 18:37:07 +05:30
Ankush Menat
f2aa5015cb fix: avoid mutating iterator while iterating over it
(cherry picked from commit fdfa39c231)
2021-11-09 18:37:07 +05:30
Ankush Menat
65844932cc fix: use completion qty instead of transfer quantity for JC status
(cherry picked from commit 37799fe3dd)
2021-11-09 18:37:07 +05:30
mergify[bot]
47b609ef1a fix(India setup): setup company independent fixtures for patch (#28299)
(cherry picked from commit 88b5bda34b)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-11-09 17:50:38 +05:30
mergify[bot]
077073f9a3 perf: improve financial statement loading time (#28295)
(cherry picked from commit b7a44fe0a3)

Co-authored-by: Saqib Ansari <nextchamp.saqib@gmail.com>
2021-11-09 17:33:52 +05:30
rohitwaghchaure
9869b17ee0 Merge pull request #28291 from frappe/mergify/bp/version-13-hotfix/pr-28150
feat: provision to close the Work Order (backport #28150)
2021-11-09 16:40:46 +05:30
rohitwaghchaure
346c76cf38 Merge pull request #28290 from frappe/mergify/bp/version-13-pre-release/pr-28150
feat: provision to close the Work Order (backport #28150)
2021-11-09 16:38:10 +05:30
rohitwaghchaure
81e7ebc112 Merge pull request #28293 from frappe/mergify/bp/version-13-pre-release/pr-28219
feat: provision to have limited parameters for in-process quality inspection (backport #28219)
2021-11-09 16:37:37 +05:30
Sagar Vora
442177aeee fix: specify fields to be set in Lead (#28289) 2021-11-09 16:05:03 +05:30
Diksha Jadhav
bb9713a7b2 refactor: use fetch from property for qi template on job card
(cherry picked from commit 467324c87f)
2021-11-09 10:23:00 +00:00
Diksha Jadhav
ac54e80856 feat: provision to have limited parameters for in-process quality inspection
(cherry picked from commit 6c45f8b2c4)
2021-11-09 10:22:59 +00:00
Diksha Jadhav
3c78ac21d9 feat(manufacturing): add link field for quality inspection template on operation
(cherry picked from commit 281a9cc749)
2021-11-09 10:22:58 +00:00
rohitwaghchaure
8079dc1bae Merge pull request #28219 from DeeMysterio/in-process-qi
feat: provision to have limited parameters for in-process quality inspection
2021-11-09 15:49:37 +05:30
Anupam
47851ce754 fix: get_planned_qty chnages
(cherry picked from commit 663a7afe4d)
2021-11-09 10:17:09 +00:00
Anupam
7e256e220b fix: test cases
(cherry picked from commit 27709a1c71)
2021-11-09 10:17:09 +00:00
Anupam
26c23719a0 fix: testcases:
(cherry picked from commit 7044ae5e39)
2021-11-09 10:17:08 +00:00
Anupam
f96ac4e204 fix: linter isuue
(cherry picked from commit cc15cf6ae2)
2021-11-09 10:17:07 +00:00
Anupam
b993d45ba5 fix: sider isuue
(cherry picked from commit ba47bd02b6)
2021-11-09 10:17:02 +00:00
Anupam
e57f53e771 fix: validate job card
(cherry picked from commit 9b4c7e4796)
2021-11-09 10:17:00 +00:00
Anupam
21cc87990a fix: test cases
(cherry picked from commit 9c0906f1b5)
2021-11-09 10:17:00 +00:00
Anupam
fcafc0e184 fix: linter issues
(cherry picked from commit e36da4d137)
2021-11-09 10:16:59 +00:00
Anupam
ab1f12ff66 fix: linter issues
(cherry picked from commit 59e4fd980c)
2021-11-09 10:16:59 +00:00
Anupam
fcb80faadc fix: added testcase
(cherry picked from commit 530a0f481e)
2021-11-09 10:16:58 +00:00
Anupam
ac3605c96a fix: sider issue
(cherry picked from commit 264b0df9ff)
2021-11-09 10:16:57 +00:00
Anupam
e5e16b5dc4 fix: sider issue
(cherry picked from commit 55e97dce8a)
2021-11-09 10:16:57 +00:00
Anupam
91a06b690c fix: sider issue
(cherry picked from commit e290fe0721)
2021-11-09 10:16:56 +00:00
Anupam
e144f199a4 feat: added confirm dialog on closing of workorder
(cherry picked from commit 5d4c5652af)
2021-11-09 10:16:55 +00:00
Anupam
7bdc948a48 feat: provision to close the Work Order
(cherry picked from commit 23af036894)
2021-11-09 10:16:55 +00:00
Anupam
515b8dd8ca fix: get_planned_qty chnages
(cherry picked from commit 663a7afe4d)
2021-11-09 10:16:26 +00:00
Anupam
dac0d87e16 fix: test cases
(cherry picked from commit 27709a1c71)
2021-11-09 10:16:25 +00:00
Anupam
365572f5ea fix: testcases:
(cherry picked from commit 7044ae5e39)
2021-11-09 10:16:25 +00:00
Anupam
029e66709d fix: linter isuue
(cherry picked from commit cc15cf6ae2)
2021-11-09 10:16:24 +00:00
Anupam
8851b7adcf fix: sider isuue
(cherry picked from commit ba47bd02b6)
2021-11-09 10:16:24 +00:00
Anupam
116210dcea fix: validate job card
(cherry picked from commit 9b4c7e4796)
2021-11-09 10:16:23 +00:00
Anupam
dce943b41f fix: test cases
(cherry picked from commit 9c0906f1b5)
2021-11-09 10:16:23 +00:00
Anupam
cb209d9b57 fix: linter issues
(cherry picked from commit e36da4d137)
2021-11-09 10:16:23 +00:00
Anupam
7c7493c91d fix: linter issues
(cherry picked from commit 59e4fd980c)
2021-11-09 10:16:22 +00:00
Anupam
f3da88e301 fix: added testcase
(cherry picked from commit 530a0f481e)
2021-11-09 10:16:22 +00:00
Anupam
8ddeb83191 fix: sider issue
(cherry picked from commit 264b0df9ff)
2021-11-09 10:16:21 +00:00
Anupam
47f8f3d9dd fix: sider issue
(cherry picked from commit 55e97dce8a)
2021-11-09 10:16:20 +00:00
Anupam
44c53deb90 fix: sider issue
(cherry picked from commit e290fe0721)
2021-11-09 10:16:20 +00:00
Anupam
d43aecbe13 feat: added confirm dialog on closing of workorder
(cherry picked from commit 5d4c5652af)
2021-11-09 10:16:19 +00:00
Anupam
e8ef54f4d7 feat: provision to close the Work Order
(cherry picked from commit 23af036894)
2021-11-09 10:16:18 +00:00
mergify[bot]
59632720b2 fix: sum of components in salary register (#28237) (#28287)
* fix: sum of components in salary register

* fix: sum of deduction components

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
(cherry picked from commit 17acb08545)

Co-authored-by: Jannat Patel <31363128+pateljannat@users.noreply.github.com>
2021-11-09 15:45:26 +05:30
mergify[bot]
58ece37d8f fix: filter only submitted fees in student fee collection report (#28280) (#28282)
* Update student_fee_collection.json

Fix: filter and show only submitted fees documents

* fix: add total row for the student fee collection

(cherry picked from commit 0e8e7e21c3)

Co-authored-by: Bibin <17405044+bibinqcs@users.noreply.github.com>
Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-11-09 15:45:11 +05:30
Diksha Jadhav
467324c87f refactor: use fetch from property for qi template on job card 2021-11-09 14:21:34 +05:30
yadavyk
627dd67a9b fix: Added count for Healthcare Practioner (#28286)
Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-11-09 13:15:41 +05:30
mergify[bot]
178a883ecc fix: show full item name in search widget (#28283) (#28284)
(cherry picked from commit 34f5283c17)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-11-09 12:15:09 +05:30
mergify[bot]
eacf26d618 fix: show full item name in search widget (#28283) (#28285)
(cherry picked from commit 34f5283c17)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-11-09 12:14:54 +05:30
mergify[bot]
40b5bb1d15 fix: do not generate multiple invoices (#28216) 2021-11-08 20:07:57 +05:30
mergify[bot]
5d249016c3 fix: do not generate multiple invoices (#28215) 2021-11-08 20:07:47 +05:30
Deepesh Garg
5d46f765a6 Merge pull request #28276 from frappe/mergify/bp/version-13-pre-release/pr-28262
fix: Taxjar customer_address fix, currency fix (backport #28262)
2021-11-08 19:04:06 +05:30
Deepesh Garg
2654098ce2 Merge pull request #28274 from frappe/mergify/bp/version-13-pre-release/pr-28272
fix: KSA VAT setup issues (backport #28272)
2021-11-08 18:52:20 +05:30
Deepesh Garg
9b2c460cb8 Merge pull request #28275 from frappe/mergify/bp/version-13-hotfix/pr-28272
fix: KSA VAT setup issues (backport #28272)
2021-11-08 18:47:21 +05:30
Subin Tom
a403200516 fix: company condition fix, added company field
(cherry picked from commit 7ad2717acc)
2021-11-08 13:12:00 +00:00
Subin Tom
1dc7cb8ad1 fix: fixed company field, updated patch
(cherry picked from commit 7f2d304f32)
2021-11-08 13:12:00 +00:00
Subin Tom
abe6ef4cd4 fix: Added company field, filtered account heads
(cherry picked from commit 902c03cd37)
2021-11-08 13:12:00 +00:00
Subin Tom
3d1b833f35 fix: Fixed customer address variable, sales invoice item field currency issue
(cherry picked from commit 904010ab64)
2021-11-08 13:11:59 +00:00
Deepesh Garg
bad6c3de43 Merge pull request #28262 from nemesis189/taxjar-cust-address-patch-update
fix: Taxjar customer_address fix, currency fix
2021-11-08 18:40:35 +05:30
Deepesh Garg
6c1bb1ecb9 Merge pull request #28273 from frappe/mergify/bp/version-13-hotfix/pr-28065
fix(minor): check if gst_category exists while validating GSTIN (backport #28065)
2021-11-08 18:33:37 +05:30
Deepesh Garg
2dc12505b2 fix: Resolve conflicts 2021-11-08 18:16:46 +05:30
Deepesh Garg
987bd4fce2 fix: Resolve conflicts 2021-11-08 18:15:53 +05:30
Deepesh Garg
8a510b5441 fix: Add patch to make custom fields
(cherry picked from commit 508832e90a)

# Conflicts:
#	erpnext/patches.txt
2021-11-08 12:40:19 +00:00
Deepesh Garg
a34519c0c4 fix: KSA VAT setup issues
(cherry picked from commit c81d4734c4)
2021-11-08 12:40:18 +00:00
Deepesh Garg
f5251b5a86 fix: Add patch to make custom fields
(cherry picked from commit 508832e90a)

# Conflicts:
#	erpnext/patches.txt
2021-11-08 12:39:55 +00:00
Deepesh Garg
aa6caa00bf fix: KSA VAT setup issues
(cherry picked from commit c81d4734c4)
2021-11-08 12:39:54 +00:00
Subin Tom
7ad2717acc fix: company condition fix, added company field 2021-11-08 18:03:44 +05:30
Subin Tom
7f2d304f32 fix: fixed company field, updated patch 2021-11-08 17:59:03 +05:30
Anuja Pawar
d37ca7b3e0 fix: sider
(cherry picked from commit f2fbcc8124)
2021-11-08 12:24:29 +00:00
Anuja Pawar
bbea156aa6 fix: update set_value query
(cherry picked from commit dd3cadd46b)
2021-11-08 12:24:29 +00:00
Anuja Pawar
10606b242c fix: re-writing sql query with ORM methods
(cherry picked from commit bc1e7bc15f)
2021-11-08 12:24:29 +00:00
Anuja Pawar
1dbb83c03d fix: sider
(cherry picked from commit 6a3bd882b4)
2021-11-08 12:24:28 +00:00
Anuja Pawar
ba08b4fcb3 fix: sider
(cherry picked from commit 4f53837624)
2021-11-08 12:24:27 +00:00
Anuja Pawar
2c0e8c8559 fix: check if gst_category exist
(cherry picked from commit 59c31bb124)
2021-11-08 12:24:27 +00:00
Deepesh Garg
35bd31e939 Merge pull request #28270 from frappe/mergify/bp/version-13-pre-release/pr-28166
feat(Print Format): KSA VAT Invoice (backport #28166)
2021-11-08 17:15:49 +05:30
Deepesh Garg
18e7fbf33a Merge pull request #28271 from frappe/mergify/bp/version-13-hotfix/pr-28166
feat(Print Format): KSA VAT Invoice (backport #28166)
2021-11-08 17:15:29 +05:30
ahmadpak
8f52ebdd68 update(Print Format): Sales Invoice
- KSA VAT Invoice
Customer Identification Number Added

(cherry picked from commit 8df50cf1e0)
2021-11-08 09:58:38 +00:00
ahmadpak
1e08111da4 new (Print Format): KSA VAT Invoice
(cherry picked from commit 2a5beec885)
2021-11-08 09:58:38 +00:00
ahmadpak
0ba59049f9 update(Print Format): Sales Invoice
- KSA VAT Invoice
Customer Identification Number Added

(cherry picked from commit 8df50cf1e0)
2021-11-08 09:58:11 +00:00
ahmadpak
9f6b0dbfdf new (Print Format): KSA VAT Invoice
(cherry picked from commit 2a5beec885)
2021-11-08 09:58:11 +00:00
Subin Tom
902c03cd37 fix: Added company field, filtered account heads 2021-11-08 15:16:20 +05:30
Subin Tom
904010ab64 fix: Fixed customer address variable, sales invoice item field currency issue 2021-11-08 09:49:11 +05:30
Diksha Jadhav
6c45f8b2c4 feat: provision to have limited parameters for in-process quality inspection 2021-11-07 20:50:48 +05:30
Sagar Sharma
bb3957eba3 fix: auto update price list rate (#28255)
* fix: auto update price list rate

* fix: hide field when auto insert isn't enabled
2021-11-07 17:18:00 +05:30
mergify[bot]
4cb3c2a46c feat: replace newline in remarks (DATEV report) (#28152) (#28247)
(cherry picked from commit 114028e473)

Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2021-11-05 11:15:31 +05:30
mergify[bot]
79be341ea4 feat: replace newline in remarks (DATEV report) (#28152) (#28248)
(cherry picked from commit 114028e473)

Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2021-11-05 11:15:18 +05:30
fatihustaoglu
95a5ef1d41 fix: Bulk update of valid upto field wasn't working (#28242)
* fix: Bulk update of valid upto field wasn't working

Check in dates for the price list was failing because valid_upto field was string. Converting to date fixed the problem.

* chore: extend fix and cleanup whitespace

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-11-04 11:27:56 +05:30
Suraj Shetty
b3dc199118 Merge pull request #28191 from frappe/build-on-release
ci: migrate docker to github actions
2021-11-03 18:10:20 +05:30
Saqib
73e9e991cc fix(e-invoicing): link to error log list 2021-11-03 17:49:50 +05:30
Saqib
9a3c6694b9 Merge pull request #28221 from frappe/mergify/bp/version-13-pre-release/pr-27946
fix(Payment Entry): splitting outstanding rows as per payment terms (backport #27946)
2021-11-03 15:41:29 +05:30
Saqib
1ba2a47761 Merge pull request #28220 from frappe/mergify/bp/version-13-hotfix/pr-27946
fix(Payment Entry): splitting outstanding rows as per payment terms (backport #27946)
2021-11-03 15:41:02 +05:30
Anuja Pawar
2c9266807a fix(Payment Entry): splitting outstanding rows as per payment terms (#27946)
(cherry picked from commit d72709dd81)
2021-11-03 09:18:40 +00:00
Anuja Pawar
fa24b9842b fix(Payment Entry): splitting outstanding rows as per payment terms (#27946)
(cherry picked from commit d72709dd81)
2021-11-03 09:18:12 +00:00
Revant Nandgaonkar
afb236a06b ci: change GITHUB_PAT to CI_PAT 2021-11-03 13:56:50 +05:30
mergify[bot]
94905df774 fix: ignore unsupported methods while resyncing (#28210) (#28214)
(cherry picked from commit 72a050fb0b)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-11-03 09:47:00 +05:30
Ankush Menat
72a050fb0b fix: ignore unsupported methods while resyncing (#28210) 2021-11-02 23:05:14 +05:30
Marica
fa5cee479f Merge pull request #28204 from frappe/mergify/bp/version-13-pre-release/pr-28202
fix: Serial Nos not set in the row after scanning in popup (backport #28202)
2021-11-02 20:41:33 +05:30
Deepesh Garg
885f1e0fd8 Merge pull request #28207 from frappe/mergify/bp/version-13-pre-release/pr-28205
fix: Error on LDC creation (backport #28205)
2021-11-02 20:29:43 +05:30
Deepesh Garg
2a1695c7de Merge pull request #28206 from frappe/mergify/bp/version-13-hotfix/pr-28205
fix: Error on LDC creation (backport #28205)
2021-11-02 20:29:31 +05:30
Deepesh Garg
e358d34c4f fix: Error on LDC creation
(cherry picked from commit 66348e1a03)
2021-11-02 14:59:10 +00:00
Deepesh Garg
35c5822115 fix: Error on LDC creation
(cherry picked from commit 66348e1a03)
2021-11-02 14:58:30 +00:00
Marica
df6465d715 Merge pull request #28203 from frappe/mergify/bp/version-13-hotfix/pr-28202
fix: Serial Nos not set in the row after scanning in popup (backport #28202)
2021-11-02 20:25:59 +05:30
marination
093d9f4a70 fix: Serial Nos not set in the row after scanning in popup
- Avoid whitspaces while calculating length of serial nos

(cherry picked from commit 734b57deec)
2021-11-02 14:48:40 +00:00
marination
4262682080 fix: Serial Nos not set in the row after scanning in popup
- Avoid whitspaces while calculating length of serial nos

(cherry picked from commit 734b57deec)
2021-11-02 14:48:14 +00:00
mergify[bot]
4bdde5f706 fix: replaced "=" with "in" for multiple statuses in query #28193 (#28199)
fix: replaced "=" with "in" for multiple statuses in query
(cherry picked from commit 857d87da97)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2021-11-02 18:20:49 +05:30
mergify[bot]
50fbc167f3 fix(Payment Reconciliation): clear child tables on company/party change (#28194) 2021-11-02 17:12:11 +05:30
mergify[bot]
0a608911f1 fix(Payment Reconciliation): clear child tables on company/party change (#28153) 2021-11-02 17:10:27 +05:30
Marica
0731454f50 Merge pull request #28196 from frappe/mergify/bp/version-13-pre-release/pr-28195
fix: (ux) Remove warehouse filter on Batch field for Material Receipt (backport #28195)
2021-11-02 16:28:02 +05:30
Marica
27570db761 Merge pull request #28197 from frappe/mergify/bp/version-13-hotfix/pr-28195
fix: (ux) Remove warehouse filter on Batch field for Material Receipt (backport #28195)
2021-11-02 16:27:18 +05:30
marination
68646c5756 chore: Add comment above fix for future reference
(cherry picked from commit 48886ee705)
2021-11-02 10:40:41 +00:00
marination
189595b4f7 fix: Remove warehouse filter on Batch field for Material Receipt
(cherry picked from commit 048210a8f6)
2021-11-02 10:40:40 +00:00
marination
b81dfdcd26 chore: Add comment above fix for future reference
(cherry picked from commit 48886ee705)
2021-11-02 10:40:02 +00:00
marination
68809159ba fix: Remove warehouse filter on Batch field for Material Receipt
(cherry picked from commit 048210a8f6)
2021-11-02 10:40:00 +00:00
Revant Nandgaonkar
1736029733 chore: migrate docker to github actions 2021-11-02 12:03:22 +05:30
Diksha Jadhav
281a9cc749 feat(manufacturing): add link field for quality inspection template on operation 2021-11-01 17:19:07 +05:30
Deepesh Garg
982960fc0a Merge pull request #28177 from frappe/mergify/bp/version-13-pre-release/pr-26735
fix: COGS account in purchase receipt (backport #26735)
2021-11-01 16:51:11 +05:30
Deepesh Garg
bb7d661a04 fix: Resolve conflicts 2021-11-01 16:23:39 +05:30
Deepesh Garg
c445d8ea3c Merge pull request #28176 from frappe/mergify/bp/version-13-hotfix/pr-26735
fix: COGS account in purchase receipt (backport #26735)
2021-11-01 16:22:32 +05:30
Ankush Menat
79b087670f fix(ux): stock levels take time after item merge
Item merge creates a repost and depending on number of entries it can
take from 1 to n hours for it to finish. (depending upon queued up
reposts)

Added message so users don't feel confused till this operation is
finished.

(cherry picked from commit 1eab3a44f6)
2021-11-01 15:34:53 +05:30
Ankush Menat
6d0ff88184 fix: use warehouse to find company
(cherry picked from commit f7ffe04a4b)
2021-11-01 15:31:23 +05:30
Ankush Menat
5a40a48e31 fix: pass company while fetching valuation rate
If company is not supplied and valuation rate is 0, then default
company is used for checking if perpetual inventory is enabled or not.
This makes little sense as different companies can have different
setting for perpetual inventory.

(cherry picked from commit a0727b2e82)
2021-11-01 15:31:23 +05:30
Ankush Menat
c6557a136c fix: use warehouse to find company
(cherry picked from commit f7ffe04a4b)
2021-11-01 15:31:11 +05:30
Ankush Menat
271dad941b fix: pass company while fetching valuation rate
If company is not supplied and valuation rate is 0, then default
company is used for checking if perpetual inventory is enabled or not.
This makes little sense as different companies can have different
setting for perpetual inventory.

(cherry picked from commit a0727b2e82)
2021-11-01 15:31:11 +05:30
Deepesh Garg
134ea9214e fix: resolve conflicts 2021-11-01 14:40:19 +05:30
Rohit Waghchaure
e9d1cbb339 fix: COGS account in purchase receipt
(cherry picked from commit 2a14f255cf)

# Conflicts:
#	erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
2021-11-01 07:26:09 +00:00
Rohit Waghchaure
f88c24155c fix: COGS account in purchase receipt
(cherry picked from commit 2a14f255cf)

# Conflicts:
#	erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
2021-11-01 07:25:46 +00:00
mergify[bot]
18dddfdea9 fix: remove duplicate field from selling_settings (#28174)
fix https://github.com/frappe/erpnext/issues/28155

(cherry picked from commit 1cc4eddacb)

Co-authored-by: ahmadRagheb <ahmedragheb75@gmail.com>
2021-11-01 11:11:40 +05:30
Deepesh Garg
b2a3451ca2 Merge pull request #28173 from ahmadRagheb/patch-3
fix: Update selling_settings.json
2021-11-01 10:36:36 +05:30
ahmadRagheb
1cc4eddacb Update selling_settings.json
fix https://github.com/frappe/erpnext/issues/28155
2021-10-31 22:48:52 +02:00
mergify[bot]
f1e3a1cac2 fix: update tax template name for 18% GST (backport #28156)
fix: update tax template name for 18% GST (backport #28156)
2021-10-31 19:18:54 +05:30
Deepesh Garg
978d1cde2d Merge pull request #28165 from frappe/mergify/bp/version-13-pre-release/pr-28162
fix: Error for missing PAN no field (backport #28162)
2021-10-31 18:50:10 +05:30
Deepesh Garg
04f6070df4 Merge pull request #28164 from frappe/mergify/bp/version-13-hotfix/pr-28162
fix: Error for missing PAN no field (backport #28162)
2021-10-31 18:49:52 +05:30
rohitwaghchaure
08e65af5b1 Merge pull request #28169 from frappe/mergify/bp/version-13-hotfix/pr-28168
fix: patch update_category_in_ltds_certificate (backport #28168)
2021-10-31 11:17:31 +05:30
rohitwaghchaure
feaae330d5 Merge pull request #28170 from frappe/mergify/bp/version-13-pre-release/pr-28168
fix: patch update_category_in_ltds_certificate (backport #28168)
2021-10-31 10:28:09 +05:30
Rohit Waghchaure
060127663a fix: patch update_category_in_ltds_certificate
(cherry picked from commit cae29b71d8)
2021-10-31 04:27:51 +00:00
Rohit Waghchaure
57d931dbbe fix: patch update_category_in_ltds_certificate
(cherry picked from commit cae29b71d8)
2021-10-31 04:27:32 +00:00
rohitwaghchaure
88bf748275 Merge pull request #28159 from rohitwaghchaure/merge-hotfix-to-pre-release-for-13-14
chore: merge branch 'version-13-hotfix' into 'version-13-pre-release'
2021-10-30 22:33:26 +05:30
Deepesh Garg
aa464cc615 fix: Error for missing PAN no field
(cherry picked from commit 541c892f97)
2021-10-30 14:00:07 +00:00
Deepesh Garg
686c4fa86f fix: Error for missing PAN no field
(cherry picked from commit 541c892f97)
2021-10-30 13:59:47 +00:00
Rohit Waghchaure
8581b5cdea chore: merge branch 'version-13-hotfix' into 'version-13-pre-release' 2021-10-30 15:15:19 +05:30
mergify[bot]
9abb467127 fix: Make status filter optional (#28151) 2021-10-29 18:16:23 +05:30
mergify[bot]
f16e0e17cc fix: POS consolidated invoice rounded total issue (#28146) 2021-10-29 18:05:49 +05:30
Deepesh Garg
fe59c313d6 Merge pull request #28148 from frappe/mergify/bp/version-13-hotfix/pr-28145
fix: COA importer importing all accounts as group (backport #28145)
2021-10-29 18:03:58 +05:30
Ankush Menat
9e9f730dd1 fix: sort by creation to break tie
(cherry picked from commit ff9cfe0d14)
2021-10-29 17:42:05 +05:30
Ankush Menat
264ffe05b4 refactor: simplify sr no fetching
(cherry picked from commit f4b60a48f5)
2021-10-29 17:42:05 +05:30
Ankush Menat
42686f92e9 fix: fetch serial nos from ledger unconditionally
(cherry picked from commit 2aa019ae4c)
2021-10-29 17:42:05 +05:30
Noah Jacob
7931cfd77b refactor: replaced db.sql with qb
(cherry picked from commit deb6b38fab)
2021-10-29 17:42:05 +05:30
Noah Jacob
835d96c727 fix: incorrect amount of serial_nos fetched
(cherry picked from commit b44945380d)
2021-10-29 17:42:05 +05:30
Deepesh Garg
f7cf3fed8e Merge pull request #28144 from frappe/mergify/bp/version-13-hotfix/pr-27994
fix: incorrect VAT Amount in UAE VAT 201 report (backport #27994)
2021-10-29 17:20:13 +05:30
Deepesh Garg
0664e64003 fix: COA importer importing all accounts as group
(cherry picked from commit 8ccd3fee9e)
2021-10-29 11:37:11 +00:00
Deepesh Garg
4f7046e6c2 Merge pull request #28143 from frappe/mergify/bp/version-13-hotfix/pr-28135
fix: Accounting Dimension filters not honouring user permissions (backport #28135)
2021-10-29 17:04:45 +05:30
Dany Robert
43ca66f461 fix: wrong vat amount
(cherry picked from commit 4c499e804a)
2021-10-29 09:13:18 +00:00
Dany Robert
ff7423f15f fix: incorrect VAT Amount in UAT VAT 201 report
(cherry picked from commit 1aa34d1780)
2021-10-29 09:13:17 +00:00
Deepesh Garg
7cbf577f1f fix: Accounting Dimension filters not honouring user permissions
(cherry picked from commit aa9e78bed1)
2021-10-29 09:10:50 +00:00
mergify[bot]
1454f8bc96 fix: Skip empty rows while updating unsaved BOM cost (#28136) (#28142)
- Dont try to get valuation rate if row has no item code
- Dont try to add exploded items if row has no item code

(cherry picked from commit 292419bc9e)

Co-authored-by: Marica <maricadsouza221197@gmail.com>
2021-10-29 14:19:51 +05:30
mergify[bot]
a33ebbdc54 test: remove unnecessary creation of new company (#28137) (#28140)
(cherry picked from commit afe09d4e80)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-10-29 14:19:25 +05:30
Deepesh Garg
ee6da35c0b Merge pull request #28134 from frappe/mergify/bp/version-13-hotfix/pr-28122
fix: Consolidated Financial Report throws error for empty equity data list (backport #28122)
2021-10-29 13:51:48 +05:30
Deepesh Garg
1c0ae92912 Merge pull request #28133 from frappe/mergify/bp/version-13-hotfix/pr-27609
fix: Unlink PO on cancelling SO (backport #27609)
2021-10-29 13:51:21 +05:30
Subin Tom
3fc2442622 fix: Consolidated Financial Report throws error for empty equity data list
(cherry picked from commit d786855d94)
2021-10-29 06:42:13 +00:00
Deepesh Garg
a60ecb95b0 fix: Ignore PO on So cancel
(cherry picked from commit 051aaa708d)
2021-10-29 06:28:28 +00:00
GangaManoj
ed58f206fa fix: Remove unused imports
(cherry picked from commit d24cfff388)
2021-10-29 06:28:27 +00:00
GangaManoj
305b9508e6 fix: Remove debugger
(cherry picked from commit 1a9d2684e2)
2021-10-29 06:28:27 +00:00
GangaManoj
d47007adb2 fix: Remove print statements
(cherry picked from commit 8844fdbf23)
2021-10-29 06:28:26 +00:00
GangaManoj
7c42b8b702 fix: Unlink PO on cancelling SO
(cherry picked from commit e77534fe13)
2021-10-29 06:28:25 +00:00
GangaManoj
2fb18afea0 fix: Unlink PO on cancelling SO
(cherry picked from commit 8396f24e70)
2021-10-29 06:28:24 +00:00
Deepesh Garg
c822f286c7 Merge pull request #28125 from deepeshgarg007/ksa-vat-v13
feat(regional): KSA E-Invoicing and VAT Report
2021-10-29 11:15:19 +05:30
Deepesh Garg
6260f0caa1 Merge pull request #28128 from frappe/mergify/bp/version-13-hotfix/pr-28071
fix : Get LTDS based on tax withholding category (backport #28071)
2021-10-29 09:05:12 +05:30
Deepesh Garg
4019148a42 fix: Resolve conflicts 2021-10-28 20:26:38 +05:30
Deepesh Garg
7a25d5f2de fix: Rewrite patch using query builder
(cherry picked from commit 09a5616e2d)
2021-10-28 14:31:06 +00:00
Deepesh Garg
1ba0111e16 fix: Replace section code with tax withholding category in LDC
(cherry picked from commit bf13d183d8)

# Conflicts:
#	erpnext/patches.txt
2021-10-28 14:31:06 +00:00
Deepesh Garg
e9c3d3ff0d fix: Get LTDS based on tax withholding category
(cherry picked from commit e6e804e7d7)
2021-10-28 14:31:05 +00:00
Ahmad
6d39b90b8e refactor: make strings translate 2021-10-28 17:53:41 +05:30
Ahmad
b69381117f fix: pre-commit hooks 2021-10-28 17:53:22 +05:30
Ahmad
301b94e06a fix: pre-commit hooks 2021-10-28 17:53:22 +05:30
Ahmad
30f3b4804d refactor (regional): KSA utils 2021-10-28 17:53:22 +05:30
Ahmad
0313b44f1f Update erpnext/regional/saudi_arabia/utils.py
Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
2021-10-28 17:53:22 +05:30
Ahmad
f9770b69b2 Update erpnext/regional/saudi_arabia/utils.py
Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
2021-10-28 17:53:22 +05:30
Ahmad
5f7c5bcac8 fix: indentations 2021-10-28 17:52:53 +05:30
Ahmad
873ed1ae4f refactor(regional): moved methos to region specific utils for KSA 2021-10-28 17:52:02 +05:30
Ahmad
3fca08e3e8 Update erpnext/regional/saudi_arabia/setup.py
Method name updated

Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
2021-10-28 17:46:30 +05:30
Ahmad
220ab16698 Refactor erpnext/regional/__init__.py
Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
2021-10-28 17:44:26 +05:30
Ahmad
a8ba52e8a5 Update erpnext/regional/report/ksa_vat/ksa_vat.py
String made translatable

Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
2021-10-28 17:44:19 +05:30
Ahmad
60fd96085c feat(regional): QR Code generation for Saudi Arabia Sales Invoices 2021-10-28 17:44:04 +05:30
Ahmad
e03965afa5 feat(Regional): KSA VAT Report 2021-10-28 17:39:15 +05:30
Deepesh Garg
d116aa6f23 Merge pull request #28116 from frappe/mergify/bp/version-13-hotfix/pr-28114
fix: Autoemail report not showing dynamic report filters (backport #28114)
2021-10-28 11:57:28 +05:30
mergify[bot]
9c7cdc1079 fix: opportunity link is missign from customer (#28110) (#28121)
(cherry picked from commit 4787a75208)

Co-authored-by: Anupam Kumar <anupamvns0099@gmail.com>
2021-10-28 11:48:19 +05:30
Marica
a19f0f484c Merge pull request #28098 from marination/so-quote-portal
fix: SO/Quotation Portal Missing Images
2021-10-28 00:16:07 +05:30
Marica
5388ecf85e Merge pull request #27926 from frappe/mergify/bp/version-13-hotfix/pr-27914
fix: Avoid automatic customer creation on website user login (backport #27914)
2021-10-28 00:05:55 +05:30
Deepesh Garg
b34e737930 fix: Autoemail report not showing dynamic report filters
(cherry picked from commit 3a6894fb9c)
2021-10-27 14:29:38 +00:00
Ankush Menat
56c98aa59e fix(ux): make qty 1 by default in WO
(cherry picked from commit d81b87d9b3)
2021-10-27 19:49:00 +05:30
Ankush Menat
aa210ba6c8 fix: don't show blocked supplier in autocomplete
(cherry picked from commit 2221c9ed89)
2021-10-27 19:49:00 +05:30
Ankush Menat
4bfacabf85 fix(ux): alternative item two way validation
(cherry picked from commit 5902762ec8)
2021-10-27 19:49:00 +05:30
Ankush Menat
99a1eea982 fix: remove bad hardcoded max value
(cherry picked from commit 5f9bd9b8e9)
2021-10-27 19:49:00 +05:30
mergify[bot]
48acb56cb0 fix: Remove pointless buttons from Payment Order (#28108)
fix: Remove pointless buttons from Payment Order
(cherry picked from commit c9f3ea5fea)

Co-authored-by: Ganga Manoj <ganga.manoj98@gmail.com>
2021-10-27 16:16:31 +05:30
mergify[bot]
5867d97e7c fix(ux): misleading label for image fields (#28107) (#28109)
(cherry picked from commit e0cf45e7ec)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-10-27 15:29:08 +05:30
mergify[bot]
e757970db3 fix(general_ledger): Order by in case Group by Account (#28093) (#28106)
* Update general_ledger.py

Fix order_by_statement if filter group by: Group by Account

* chore: whitespace

Co-authored-by: Ankush Menat <ankushmenat@gmail.com>
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
(cherry picked from commit f24ed6723e)

Co-authored-by: hendrik <hendrik.zeta@gmail.com>
2021-10-27 14:45:05 +05:30
Saqib
2a60a65ccd Merge pull request #28102 from frappe/mergify/bp/version-13-hotfix/pr-27916
perf(minor): improve sales invoice submission (backport #27916)
2021-10-27 14:26:38 +05:30
Afshan
db5593287e Merge branch 'version-13-hotfix' into mergify/bp/version-13-hotfix/pr-27916 2021-10-27 14:05:51 +05:30
mergify[bot]
e8b46bf3a3 fix(ux): add naming series to ERPNext setting workspace (backport #28090) (#28103)
* fix(ux): add naming series to ERPNext setting workspace  (#28090)

* fix(ux): add naming series to setting workspace

* fix: doctype link to naming series

Co-authored-by: Ankush Menat <ankushmenat@gmail.com>

Co-authored-by: Summayya <frappe@Summayyas-MacBook-Air.local>
Co-authored-by: Ankush Menat <ankushmenat@gmail.com>
(cherry picked from commit 0806e32049)

# Conflicts:
#	erpnext/setup/workspace/erpnext_settings/erpnext_settings.json

* fix: conflicts

Co-authored-by: Summayya Hashmani <58825865+sumaiya2908@users.noreply.github.com>
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-10-27 14:03:24 +05:30
Marica
67e5e95466 Merge pull request #27931 from marination/optimize-get-attribute-filters-hotfix
perf: Optimize get_attribute_filters (#26729)
2021-10-27 13:31:58 +05:30
mergify[bot]
f1b7bb8878 fix: Update receivable/payable account on company change (backport #28057) (#28087)
* fix: Update receivable/payable account on company change

(cherry picked from commit 65025fb628)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/sales_invoice.js

* fix: Update sales_invoice.js

Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-10-27 13:30:32 +05:30
mergify[bot]
fb742476f8 fix: Payment Terms validation precision (#28104)
(cherry picked from commit 9c1705205f)

Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-10-27 13:26:57 +05:30
mergify[bot]
d4b4bd9d97 fix: update production plan status (backport #27567)
* fix: update production plan status #27567

fix: update production plan status
(cherry picked from commit 05831b18ad)

# Conflicts:
#	erpnext/patches.txt

* fix: resolve conflicts

Co-authored-by: Alan <2.alan.tom@gmail.com>
Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-10-27 13:20:51 +05:30
Afshan
accb98ccf4 Merge branch 'version-13-hotfix' into mergify/bp/version-13-hotfix/pr-27916 2021-10-27 12:58:30 +05:30
Deepesh Garg
6acab32934 Merge pull request #28085 from frappe/mergify/bp/version-13-hotfix/pr-28055
fix(UX): Add mandatory depends on condition for reference no and date fields (backport #28055)
2021-10-27 11:57:20 +05:30
Saqib
5d4d6bb52b fix: sider
(cherry picked from commit ac381d21fe)
2021-10-27 06:13:33 +00:00
Ankush Menat
a2a462f2f5 fix: undo changes to allow negative stock flag
(cherry picked from commit 7bafa11d57)
2021-10-27 06:13:32 +00:00
Saqib Ansari
b1efb7f80b perf: skip insertion of stock ledger entry
(cherry picked from commit c7fc609236)
2021-10-27 06:13:32 +00:00
Saqib Ansari
97fc449222 perf: get total company stock only for purchase order
(cherry picked from commit eb3aae870f)
2021-10-27 06:13:32 +00:00
Saqib Ansari
cb0168ae65 perf: fetch mode of payments data in single query
(cherry picked from commit 7b691beabb)
2021-10-27 06:13:31 +00:00
Saqib Ansari
de38c70707 perf: skip get_pricing_rules if no pricing rule exists
(cherry picked from commit a500252570)
2021-10-27 06:13:31 +00:00
Saqib
cb97e950e6 feat(e-invoicing): dispatch address (#28084) 2021-10-27 11:39:00 +05:30
Ankush Menat
a046da1e61 test: picklist item grouping
(cherry picked from commit 479ecb8de0)
2021-10-27 11:30:30 +05:30
Ankush Menat
28026f7f1c refactor: use defaultdict and enumeration
(cherry picked from commit 6942900555)
2021-10-27 11:30:30 +05:30
Diksha Jadhav
93a0ea7118 feat(pick list): group items based on item code and warehouse before printing picklist
(cherry picked from commit f2d136e574)
2021-10-27 11:30:30 +05:30
mergify[bot]
a30cfbce42 fix: change modified timestamp to apply changes on migrate #28095 (#28099)
fix: change modified timestamp to apply changes on migrate
(cherry picked from commit 2920f2f614)

Co-authored-by: Dany Robert <rtdany10@gmail.com>
2021-10-27 11:20:13 +05:30
mergify[bot]
019c5a338d fix(ux): overbiling message in SO->SI, PO->PI (bp #28088)
(cherry picked from commit 6ec047cba9)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-10-27 11:08:23 +05:30
gsi-maruiz
8cad23b8fb fix: add filter to query to avoid send reminder for zero years (#28092)
Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-10-27 11:00:56 +05:30
marination
dd2dba6f01 style: Fixed indentation for visible heirarchy 2021-10-27 10:57:48 +05:30
Deepesh Garg
f63a71e2cc fix(minor): Add mandatory depends on condition for reference no and date fields
(cherry picked from commit a20058a343)
2021-10-26 14:33:10 +00:00
mergify[bot]
f81c5cd478 fix: POS Closing Entry without linked invoices (#28077) 2021-10-26 14:42:44 +05:30
mergify[bot]
a23ef95cd8 refactor: shows opening balance from filtered from_date (#26877) (#28072)
* refactor: shows opening balance from filtered from_date

* refactor: opening balance considered from filtered from_date in stock ledger

* fix: check if stock reco is opening and misc cleanups

(cherry picked from commit fdaf93f76c)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2021-10-25 09:09:44 +05:30
Deepesh Garg
943def5faa Merge pull request #28014 from deepeshgarg007/tds_computation_summary_fixes
fix: Error in TDS computation summary
2021-10-23 13:16:30 +05:30
Ankush Menat
7a08f8aeec chore: change semgrep rules repo name
[skip ci]
2021-10-22 22:40:56 +05:30
mergify[bot]
a082d70553 ci: move semgrep rules out of repo (backport #28067)
* ci: move semgrep rules out of repo (#28067)

Moving semgrep rules out of repos as it's unnecessary to maintain
same ruleset for different repos and different branches.

(cherry picked from commit cc1baae5eb)

# Conflicts:
#	.github/helper/semgrep_rules/frappe_correctness.py
#	.github/helper/semgrep_rules/frappe_correctness.yml
#	.github/helper/semgrep_rules/report.py
#	.github/helper/semgrep_rules/ux.py
#	.github/workflows/linters.yml

* fix: resolve conflicts

Co-authored-by: Ankush Menat <ankush@frappe.io>
2021-10-22 21:58:45 +05:30
mergify[bot]
60620fe335 fix: don't reset rates in Timesheet Detail when Activity Type is cleared (#28056)
* fix: don't reset rates when activity type is cleared

* refactor: suggestions from review

Co-authored-by: Sagar Vora <sagar@resilient.tech>

* refactor: suggestions from review (fix)

* style: fix sider

* fix: sider issue

Co-authored-by: Sagar Vora <sagar@resilient.tech>
(cherry picked from commit 2bdaf7bb23)

Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2021-10-22 14:06:11 +05:30
marination
d7e55387fc fix: SO Portal fixes
- SO Portal: fixed missing images issue
- SO Portal: fallback state when no images
- SO Portal: code indentation in `order_macros.html`
- SO Portal: Actions and indicator font size
- Recommendations: fixed space between image and title
- Recommendations: give empty image state min height
2021-10-21 20:14:28 +05:30
mergify[bot]
46567f0fe9 refactor: move process loss report to manufacturing (#28043) (#28047)
* refactor: move process loss report to manufacturing

* test: fix process loss report test

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
(cherry picked from commit 2849297471)

Co-authored-by: Alan <2.alan.tom@gmail.com>
2021-10-21 11:11:53 +05:30
Ankush Menat
5ed32b5995 fix: unused imports 2021-10-21 11:04:40 +05:30
Devin Slauenwhite
152f9b0a43 fix: useless validation message (#28029)
Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-10-21 10:58:35 +05:30
Ankush Menat
71e517f043 test: fix get_attribute_filter test
The function returns strings directly instead of objects now.
2021-10-21 10:55:11 +05:30
mergify[bot]
e0f2130731 feat: employee initial work history updated when transfer is performed (#27768) (#28045)
* feat: employee initial work history updated when transfer is performed

* fix: sider

* fix: remove commit statement

* fix: tests and code formatting

* fix: tests

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
(cherry picked from commit 03bfc77940)

Co-authored-by: Mohammed Yusuf Shaikh <49878143+mohammedyusufshaikh@users.noreply.github.com>
2021-10-21 10:34:31 +05:30
Rohit Waghchaure
b8d75ff241 Merge branch 'version-13-pre-release' into version-13 2021-10-20 21:30:20 +05:30
Rohit Waghchaure
a3b7682935 bumped to version 13.13.0 2021-10-20 21:50:20 +05:50
rohitwaghchaure
200f6da8b2 Merge pull request #28040 from rohitwaghchaure/change-log-for-v13-13
chore: change log for v13.13.0
2021-10-20 21:23:39 +05:30
Rohit Waghchaure
7c9018f401 chore: change log for v13.13.0 2021-10-20 21:15:13 +05:30
mergify[bot]
4f5d67883c fix: consolidated report issue #28035 (#28039)
fix: consolidated report issue
(cherry picked from commit 871cb1157f)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2021-10-20 21:10:45 +05:30
Ankush Menat
5ba315eb96 test: execute manufacturing reports
(cherry picked from commit da3635b94f)
2021-10-20 21:00:11 +05:30
Ankush Menat
408c4a6f54 fix: remove debug from query
(cherry picked from commit 126ba16740)
2021-10-20 21:00:11 +05:30
Ankush Menat
e357541509 fix: remove employee_name from job card summary
This field doesn't exist and it's moved on individual line level logs.

(cherry picked from commit 8221e7e01f)
2021-10-20 21:00:11 +05:30
mergify[bot]
1fae8f1fcb Merge pull request #28038 from frappe/mergify/bp/version-13-hotfix/pr-28036
fix: incorrect field name (backport #28036)
2021-10-20 20:55:00 +05:30
Ankush Menat
8fffd1597d fix: dont recompute item wise taxes from front end
(cherry picked from commit 393749a611)
2021-10-20 19:44:26 +05:30
mergify[bot]
34e92ab229 fix: incorrect status being set in Invoices (backport #28019) (#28031)
* fix: incorrect status being set in Invoices (#28019)

Co-authored-by: Pruthvi Patel <pruthvipatel145@gmail.com>
(cherry picked from commit 8d9d0987fe)

# Conflicts:
#	erpnext/patches.txt

* fix: merge conflict

Co-authored-by: Sagar Vora <sagar@resilient.tech>
2021-10-20 19:31:47 +05:30
Sagar Vora
ffadd671b7 fix: add mistakenly removed patches 2021-10-20 19:26:15 +05:30
mergify[bot]
47befa697d fix: incorrect status being set in Invoices (backport #28019) (#28030)
* fix: incorrect status being set in Invoices (#28019)

Co-authored-by: Pruthvi Patel <pruthvipatel145@gmail.com>
(cherry picked from commit 8d9d0987fe)

* fix: merge conflict

Co-authored-by: Sagar Vora <sagar@resilient.tech>
2021-10-20 19:24:19 +05:30
mergify[bot]
9ce7ea692d fix: avoid resetting employee on amending timesheets (#28025) (#28026)
(cherry picked from commit 261f80c5ca)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-10-20 17:45:43 +05:30
mergify[bot]
a739bf90c4 feat: Tax for recurring additional salary (backport #27459) (#28024)
* feat: Tax for recurring additional salary (#27459)

* fix: Logic for tax calculation on recurring additional salary

* fix: Get actual amount always in case of overwritten additional salary even if based on payment days

* feat: Test case added for recurring additional salary

* fix: use query builder to get additional salaries instead of raw SQL

* fix: query formatting and remove trailing spaces

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
(cherry picked from commit 2ef4844a3c)

# Conflicts:
#	erpnext/payroll/doctype/salary_slip/salary_slip.py
#	erpnext/payroll/doctype/salary_slip/test_salary_slip.py

* fix: conflicts

Co-authored-by: Nabin Hait <nabinhait@gmail.com>
Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-10-20 16:20:25 +05:30
Jannat Patel
676c5280cc Merge pull request #28016 from frappe/mergify/bp/version-13-pre-release/pr-27728 2021-10-20 15:53:48 +05:30
Marica
e0decb0ae2 Merge pull request #28021 from frappe/mergify/bp/version-13-pre-release/pr-28005
fix: Fetch thumbnail from Item master instead of regenerating (backport #28005)
2021-10-20 15:14:30 +05:30
marination
b906cc20ae fix: Move thumbnail updation to different patch
- Thumbnail updation handled via different patch
- create_website_items will only have one purpose
- added progress bar to `create_website_items`
- code cleanup

(cherry picked from commit 348a961b53)
2021-10-20 09:12:33 +00:00
marination
c98421c69a fix: Check if thumbnail column exists in case of table trimming
(cherry picked from commit ac8014e24c)
2021-10-20 09:12:32 +00:00
marination
d7afb9ef65 fix: Get db values as dict when checking for thumbnail in existing web item
(cherry picked from commit 46a5a83789)
2021-10-20 09:12:32 +00:00
marination
a915b9cf72 fix: re-run patch
- Patch will just fetch thumbnails if website items are created, else it will create new website items

(cherry picked from commit 11c498d9e5)
2021-10-20 09:12:32 +00:00
marination
a022e01d3f fix: Fetch thumbnail from Item master instead of regenerating
(cherry picked from commit 94177c0764)
2021-10-20 09:12:31 +00:00
Marica
077026a7ae Merge pull request #28005 from marination/patch-thumbnail-perf
fix: Fetch thumbnail from Item master instead of regenerating
2021-10-20 14:40:57 +05:30
marination
348a961b53 fix: Move thumbnail updation to different patch
- Thumbnail updation handled via different patch
- create_website_items will only have one purpose
- added progress bar to `create_website_items`
- code cleanup
2021-10-20 14:14:13 +05:30
Jannat Patel
3cf5861a8b Merge pull request #28015 from frappe/mergify/bp/version-13-hotfix/pr-27728
fix: Employee Leave Balance report should only consider ledgers of transaction type Leave Allocation (backport #27728)
2021-10-20 13:10:58 +05:30
Jannat Patel
8e9db11c69 Merge pull request #28012 from frappe/mergify/bp/version-13-hotfix/pr-27904
fix: map missing fields in opportunity (backport #27904)
2021-10-20 12:36:46 +05:30
Goh Yan Chang
867cfa04b2 Update employee_leave_balance.py
fix: Employee Leave Balance report showing wrong figures
(cherry picked from commit 632f7848a3)
2021-10-20 06:58:12 +00:00
Goh Yan Chang
50af32f35c Update employee_leave_balance.py
fix: Employee Leave Balance report showing wrong figures
(cherry picked from commit 632f7848a3)
2021-10-20 06:57:51 +00:00
Jannat Patel
6e63dc1360 Merge pull request #28013 from frappe/mergify/bp/version-13-pre-release/pr-27904 2021-10-20 12:24:37 +05:30
Deepesh Garg
944e3d467c fix: Check for supplier name 2021-10-20 12:17:13 +05:30
Deepesh Garg
b7befe49dc fix: Check for other properties 2021-10-20 12:16:22 +05:30
Jannat Patel
8c57394e78 fix: conflicts 2021-10-20 12:14:15 +05:30
Deepesh Garg
f12deae24b fix: Error in TDS computation summary 2021-10-20 12:07:22 +05:30
Jannat Patel
8e2a84e435 Merge pull request #27997 from govindsmenokee/patch-7
fix: Employee filter in YTD and MTD in salary slip
2021-10-20 11:43:55 +05:30
Jannat Patel
698214bd59 fix: removed unused lines 2021-10-20 11:36:00 +05:30
Jannat Patel
873d166a4e fix: conflicts 2021-10-20 11:32:35 +05:30
Jannat Patel
ae948e31ea fix: linters 2021-10-20 11:30:33 +05:30
Jannat Patel
9166d58717 fix: map missing fields in opportunity (#27904)
(cherry picked from commit d81f811349)

# Conflicts:
#	erpnext/crm/doctype/opportunity/opportunity.py
2021-10-20 05:56:59 +00:00
Jannat Patel
2fff5e5cd1 fix: map missing fields in opportunity (#27904)
(cherry picked from commit d81f811349)

# Conflicts:
#	erpnext/crm/doctype/opportunity/opportunity.py
2021-10-20 05:56:37 +00:00
marination
ac8014e24c fix: Check if thumbnail column exists in case of table trimming 2021-10-19 18:50:44 +05:30
marination
46a5a83789 fix: Get db values as dict when checking for thumbnail in existing web item 2021-10-19 18:39:48 +05:30
marination
11c498d9e5 fix: re-run patch
- Patch will just fetch thumbnails if website items are created, else it will create new website items
2021-10-19 18:32:43 +05:30
Deepesh Garg
7895d2a048 Merge pull request #28004 from frappe/mergify/bp/version-13-pre-release/pr-27867
fix: Totals row incorrect value in GL Entry (backport #27867)
2021-10-19 17:50:20 +05:30
marination
94177c0764 fix: Fetch thumbnail from Item master instead of regenerating 2021-10-19 17:31:55 +05:30
Jannat Patel
0a4abff354 Merge branch 'version-13-hotfix' into patch-7 2021-10-19 16:10:51 +05:30
Deepesh Garg
5a06ee9230 fix: Totals row incorrect value in GL Entry (#27867)
(cherry picked from commit ebe68c1a7a)
2021-10-19 09:39:02 +00:00
Deepesh Garg
ebe68c1a7a fix: Totals row incorrect value in GL Entry (#27867) 2021-10-19 15:08:05 +05:30
mergify[bot]
35448886bc Merge pull request #27999 from frappe/mergify/bp/version-13-hotfix/pr-27990
fix: changes in schedules gets overwritten on save (backport #27990)
2021-10-19 14:33:57 +05:30
Noah Jacob
b6609d1649 Merge pull request #27998 from frappe/mergify/bp/version-13-pre-release/pr-27990
fix: changes in schedules gets overwritten on save (backport #27990)
2021-10-19 14:20:44 +05:30
mergify[bot]
3af060c787 fix: TaxJar update - added nexus list, making api call only for nexus (backport #27497) (#27940)
* fix: TaxJar update - nexus, selective api call

(cherry picked from commit b01fe1c3e2)

* fix: sales_tax attribute in api call before submit

(cherry picked from commit 3bb60a439a)

* Update erpnext/erpnext_integrations/taxjar_integration.py

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
(cherry picked from commit 0e527311b9)

* Update erpnext/erpnext_integrations/doctype/taxjar_settings/taxjar_settings.py

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
(cherry picked from commit 486d7c3a39)

* Update erpnext/erpnext_integrations/doctype/taxjar_settings/taxjar_settings.js

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
(cherry picked from commit 435a5e4fa3)

* Update erpnext/erpnext_integrations/taxjar_integration.py

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
(cherry picked from commit 11bd42467e)

* fix: Renamed child table doctype, delete taxes for non nexus state

(cherry picked from commit 5c18654113)

* fix: updated patch, add fields only if fields are checked

(cherry picked from commit 54754f4eb8)

# Conflicts:
#	erpnext/patches/v13_0/custom_fields_for_taxjar_integration.py

* fix: patch fix, fields disabling

(cherry picked from commit 0a28fed679)

* fix: using db.exists and get_value instead of get_doc

(cherry picked from commit 8675ca5bdd)

* fix: dt instead of document in set_value query

(cherry picked from commit d3bb920e71)

* minor fixes

(cherry picked from commit 254b20bc09)

* fix: improved on_update method, added validation for tax calculation, sandbox mode checks

(cherry picked from commit 7114659ecc)

* fix: linters fix

(cherry picked from commit 3ece05a9f7)

* fix: patch fix added reload_doctype

(cherry picked from commit eaa3614155)

* fix: patch fixes- force reload doc, check for company

(cherry picked from commit 1b25e69af4)

* fix: 'Taxjar' type fix

(cherry picked from commit ea2038489f)

* fix: Update pacthes.txt

(cherry picked from commit 5d4c919c5c)

* fix: Patch

(cherry picked from commit 2d19e2d54b)

# Conflicts:
#	erpnext/patches.txt

* fix: Move product tax category folder to taxjar settings

(cherry picked from commit bd8cfb2e30)

* Update custom_fields_for_taxjar_integration.py

* fix: conflicts

* fix: linter issues

removed extra line

* fix: patch fix

einvoicing deprecation patch removed

Co-authored-by: Subin Tom <subintom2@gmail.com>
Co-authored-by: Subin Tom <36098155+nemesis189@users.noreply.github.com>
Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-10-19 13:38:50 +05:30
Noah Jacob
9431bb9466 fix: changes in schedules gets overwritten on save
(cherry picked from commit af1b9e100e)
2021-10-19 08:07:42 +00:00
Govind S Menokee
efc292a5dd YTD and MTD Messed up in Salary Slip
The filter for YTD, MTD etc are based on employee name. This seems like an amateur mistake. It should be based on employee id.
2021-10-19 12:49:00 +05:30
mergify[bot]
37088391bb feat: add enabled field in UOM (#27993) (#27996)
(cherry picked from commit 7717b99edb)

Co-authored-by: Himanshu <himanshuwarekar@yahoo.com>
2021-10-19 10:56:33 +05:30
mergify[bot]
fdd9cc76be fix: flaky Org Chart Test (#27971) (#27989)
(cherry picked from commit 8eacaddde7)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-10-18 11:47:22 +05:30
mergify[bot]
f328b226fb fix: flaky Org Chart Test (#27971) (#27988)
(cherry picked from commit 8eacaddde7)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-10-18 11:47:12 +05:30
Deepesh Garg
f8348ab681 Merge pull request #27983 from frappe/mergify/bp/version-13-pre-release/pr-27967
fix: Account number and name incorrectly imported using COA importer (backport #27967)
2021-10-18 11:04:39 +05:30
Deepesh Garg
9f71863a6a Merge pull request #27982 from frappe/mergify/bp/version-13-hotfix/pr-27967
fix: Account number and name incorrectly imported using COA importer (backport #27967)
2021-10-18 11:03:51 +05:30
Deepesh Garg
eecfb25c90 Merge pull request #27981 from frappe/mergify/bp/version-13-pre-release/pr-27934
fix: TDS round off not working from second transaction (backport #27934)
2021-10-18 11:03:00 +05:30
Deepesh Garg
c99fe8b57d Merge pull request #27980 from frappe/mergify/bp/version-13-hotfix/pr-27934
fix: TDS round off not working from second transaction (backport #27934)
2021-10-18 11:02:33 +05:30
Deepesh Garg
41a0e12954 Merge pull request #27979 from frappe/mergify/bp/version-13-pre-release/pr-27970
fix (India): Interstate internal transfer invoices not visible in GSTR-1 (backport #27970)
2021-10-18 11:01:06 +05:30
Deepesh Garg
a883f16f31 Merge pull request #27978 from frappe/mergify/bp/version-13-hotfix/pr-27970
fix (India): Interstate internal transfer invoices not visible in GSTR-1 (backport #27970)
2021-10-18 11:00:47 +05:30
Jannat Patel
07a9f16eb5 Merge pull request #27984 from frappe/mergify/bp/version-13-hotfix/pr-27850 2021-10-18 10:35:55 +05:30
Ankush Menat
f0383289d8 Merge pull request #27986 from frappe/mergify/bp/version-13-pre-release/pr-27962
fix: Retain space inside Serial no string while cleaning serial nos (backport #27962)
2021-10-18 10:34:31 +05:30
Jannat Patel
46209023ce Merge pull request #27985 from frappe/mergify/bp/version-13-pre-release/pr-27850 2021-10-18 10:32:48 +05:30
marination
e69bd39cdd test: Include serial no with spaces in it in sanitation test
(cherry picked from commit a9341672cf)
2021-10-18 04:56:11 +00:00
Marica
0fcb3cd918 fix: Use strip instead of lstrip and rstrip
Co-authored-by: Ankush Menat <ankushmenat@gmail.com>
(cherry picked from commit 8cf188d9c0)
2021-10-18 04:56:10 +00:00
marination
44ab131792 fix: Retain space inside Serial no string while cleaning serial nos
(cherry picked from commit 41035b0330)
2021-10-18 04:56:10 +00:00
pateljannat
b648d77316 fix: exclude inactive employees from auto attendance
(cherry picked from commit 921b4be348)
2021-10-18 04:35:18 +00:00
pateljannat
acc5cff7ff fix: exclude inactive employees from auto attendance
(cherry picked from commit 921b4be348)
2021-10-18 04:34:53 +00:00
Deepesh Garg
0012f0b2da fix: Account number and name incorrectly import using COA importer
(cherry picked from commit 17a8649500)
2021-10-18 03:47:22 +00:00
Deepesh Garg
f2340b360f fix: Account number and name incorrectly import using COA importer
(cherry picked from commit 17a8649500)
2021-10-18 03:46:59 +00:00
Deepesh Garg
1796f09c0f fix: TDS round off not working from second transaction
(cherry picked from commit b7a08535b5)
2021-10-18 03:24:46 +00:00
Deepesh Garg
64b58b148f fix: TDS round off not working from second transaction
(cherry picked from commit ca0067212d)
2021-10-18 03:24:46 +00:00
Deepesh Garg
9b71e02003 fix: TDS round off not working from second transaction
(cherry picked from commit b7a08535b5)
2021-10-18 03:24:23 +00:00
Deepesh Garg
50e718f508 fix: TDS round off not working from second transaction
(cherry picked from commit ca0067212d)
2021-10-18 03:24:22 +00:00
Deepesh Garg
4415bf9968 fix: Interstate internal transfer invoices not visible in GSTR-1
(cherry picked from commit d9d42b13ab)
2021-10-18 03:23:55 +00:00
Deepesh Garg
289650748c fix: Interstate internal transfer invoices not visible in GSTR-1
(cherry picked from commit d9d42b13ab)
2021-10-18 03:23:31 +00:00
mergify[bot]
268893d5d0 fix: POS Profile payment methods table (#27956) (#27966)
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
(cherry picked from commit f3cf36f613)

Co-authored-by: Subin Tom <36098155+nemesis189@users.noreply.github.com>
2021-10-15 14:32:55 +05:30
Marica
7b4a5e7e64 Merge pull request #27965 from frappe/mergify/bp/version-13-hotfix/pr-27962
fix: Retain space inside Serial no string while cleaning serial nos (backport #27962)
2021-10-14 20:38:20 +05:30
marination
0d1b04326a test: Include serial no with spaces in it in sanitation test
(cherry picked from commit a9341672cf)
2021-10-14 14:48:24 +00:00
Marica
db9f56bee8 fix: Use strip instead of lstrip and rstrip
Co-authored-by: Ankush Menat <ankushmenat@gmail.com>
(cherry picked from commit 8cf188d9c0)
2021-10-14 14:48:24 +00:00
marination
2e9d08f8b1 fix: Retain space inside Serial no string while cleaning serial nos
(cherry picked from commit 41035b0330)
2021-10-14 14:48:24 +00:00
mergify[bot]
02ddd5f2b0 fix: remove bad description (#27963) (#27964)
(cherry picked from commit 4437eb0c4b)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-10-14 20:06:07 +05:30
rohitwaghchaure
1b7d94d70d Merge pull request #27961 from rohitwaghchaure/merge-13-hotfix-to-pre-release-for-13-13
chore: Merge branch 'version-13-hotfix' into 'version-13-pre-release'
2021-10-14 19:17:22 +05:30
Rohit Waghchaure
952c60b3f5 Merge branch 'version-13-hotfix' into 'version-13-pre-release' 2021-10-14 18:31:09 +05:30
rohitwaghchaure
8c33103838 Merge pull request #27958 from frappe/mergify/bp/version-13-hotfix/pr-27954
fix: value_after_depreciation calculation (backport #27954)
2021-10-14 18:25:57 +05:30
mergify[bot]
a8c966eb25 fix: patch to enable scheduled job for reposting (backport #27957)
* fix: patch to enable scheduled job for reposting

(cherry picked from commit efc60ec2b5)

# Conflicts:
#	erpnext/patches.txt

* chore: formatting

(cherry picked from commit 3f97413814)

* Update enable_scheduler_job_for_item_reposting.py

(cherry picked from commit 230a5d4b39)

* fix: resolve conflict

Co-authored-by: Rohit Waghchaure <rohitw1991@gmail.com>
2021-10-14 17:31:51 +05:30
Saqib
88b1c1c87e fix: value_after_depreciation calculation (#27954)
(cherry picked from commit 1f70dd6e98)
2021-10-14 10:53:52 +00:00
Marica
771213c415 Merge pull request #27955 from frappe/mergify/bp/version-13-hotfix/pr-27947
fix: Improve error message for Serial No mismatch between SI and DN (backport #27947)
2021-10-14 14:24:54 +05:30
marination
d86f5ec1ba fix: Remove trailing space and line break in translatable string
(cherry picked from commit 60f35ad8a2)
2021-10-14 08:19:54 +00:00
marination
a568fc7924 fix: Improve error message for Serial No mismatch between SI and DN
(cherry picked from commit 646acb6b46)
2021-10-14 08:19:53 +00:00
mergify[bot]
c040256793 fix: cannot add deductions in internal transfer payment entry (backport #27545) (#27930)
* fix: cannot add deductions in internal transfer payment entry

(cherry picked from commit 1b7414e948)

# Conflicts:
#	erpnext/accounts/doctype/payment_entry/payment_entry.py

* fix: Update message string

(cherry picked from commit 3b9514d6e1)

# Conflicts:
#	erpnext/accounts/doctype/payment_entry/payment_entry.py

* fix: conflicts

Co-authored-by: Saqib Ansari <nextchamp.saqib@gmail.com>
Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-10-14 12:34:03 +05:30
Chillar Anand
29996ee726 fix(hr): Update expense account after company is updated (#27843) (#27919)
(cherry picked from commit f0c4ea14a9)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-10-14 11:13:00 +05:30
Deepesh Garg
1120506e11 Merge pull request #27941 from frappe/mergify/bp/version-13-hotfix/pr-27783
fix(Subscription): reorder updation of end date (backport #27783)
2021-10-13 16:56:07 +05:30
mergify[bot]
e64751e3a2 fix: not authorized to update entries after freezing accounts (backport #27937)
* fix: not authorized to update entries after freezing accounts (#27937)

* fix: not authorized to update entries after freezing accounts

* fix: Add test case

* fix(patch): patched to requeue failed reposts(check_freezing_date)

* chore: misc fixes

Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
Co-authored-by: Ankush Menat <ankushmenat@gmail.com>
(cherry picked from commit 2bb383b178)

# Conflicts:
#	erpnext/patches.txt

* fix: resolve conflict

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-10-13 16:41:21 +05:30
Himanshu
bf47c6836e Update subscription.py
(cherry picked from commit 44306bd0e5)
2021-10-13 09:52:21 +00:00
hrwx
e80192e2da fix: create past invoices
(cherry picked from commit ae657c7e4e)
2021-10-13 09:52:21 +00:00
Sagar Vora
b2f1b02e34 test: use test_dependencies instead of duplication
(cherry picked from commit 656015d99d)
2021-10-13 09:52:20 +00:00
Sagar Vora
ed090f2e3e fix: remove newline
(cherry picked from commit fc375c5bde)
2021-10-13 09:52:20 +00:00
hrwx
d796172249 fix: reorder updation of end date
(cherry picked from commit 0f03b19109)
2021-10-13 09:52:20 +00:00
Deepesh Garg
ff9f6366ad Merge pull request #27935 from frappe/mergify/bp/version-13-hotfix/pr-27907
feat: HSN based tax breakup table check in GST Settings  (backport #27907)
2021-10-13 12:56:00 +05:30
Deepesh Garg
b8683d5532 Merge pull request #27925 from frappe/mergify/bp/version-13-hotfix/pr-27758
perf: Add indexes in stock queries and speed up bin updation (backport #27758)
2021-10-13 12:08:38 +05:30
Subin Tom
4a156cdc2e added new section in gst settings page
(cherry picked from commit fc4facc5dc)
2021-10-13 06:38:27 +00:00
Subin Tom
771b076448 feat: HSN wise tax breakup check in GST Settings
(cherry picked from commit 530de12b07)
2021-10-13 06:38:26 +00:00
mergify[bot]
e6346ac982 fix: minor ux fixes in Sales & Purchase Invoice (backport #27927) (#27932)
* fix: keeping sections consistent across sales & purchase invoice

(cherry picked from commit 2bc1ca993a)

* fix: set collapsible & print hide

(cherry picked from commit d181cc42a1)

Co-authored-by: Anuja Pawar <anuja.pawar20@gmail.com>
2021-10-13 11:01:21 +05:30
Faris Ansari
666e8cd076 perf: Optimize get_attribute_filters (#26729)
* perf: Optimize get_attribute_filters

* fix: handle when filter attributes are undefined

* chore: unused imports

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-10-12 23:43:26 +05:30
Ankush Menat
547e173fe0 ci: rule to fail PRs that add a new manual commit (#27928)
Manual commits are frequent source of bugs, confusions or undefined
behaviour.

All new manual commits should be explcitly ignored with explanation on
why it's added. This will only fail for new additions. Existing ones
need to be cleaned up manually.

(cherry picked from commit 06b426e9c3)
2021-10-12 23:05:09 +05:30
mergify[bot]
37bd0ecf87 fix: force reload custom field doctype (#27909) (#27910)
custom_field.json has the same modified key in both versions but not the same content. This can happen again if something is backported, safe solution is to force reload.

(cherry picked from commit ad444153cc)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-10-12 20:38:09 +05:30
Marica
8244980d79 Merge pull request #27924 from marination/item-configure-empty-popup
fix: Item Variant selection empty popup on website
2021-10-12 20:32:18 +05:30
marination
f3650b4f9d fix: Merge conflicts with e-commerce 2021-10-12 20:29:13 +05:30
marination
6b8dad9454 fix: Sider, Linter
- Moved return to next line
- Space between function import and body

(cherry picked from commit a780f78f38)
2021-10-12 14:55:08 +00:00
marination
1590ac3ec7 fix: Avoid automatic customer creation on website user login
(cherry picked from commit d824a90fac)

# Conflicts:
#	erpnext/e_commerce/shopping_cart/utils.py
2021-10-12 14:55:08 +00:00
Deepesh Garg
10b239ec50 perf: Add indexes in stock queries and speed up bin updation #27758
perf: Add indexes in stock queries and speed up bin updation
(cherry picked from commit 6f107da165)
2021-10-12 14:46:26 +00:00
marination
c9c4a9995b fix: Item Variant selection empty popup on website
- pass item_code instead of website item name to fetch attributes
2021-10-12 19:56:12 +05:30
Ankush Menat
b6dc71679e fix: remove transaction commit from tests
(cherry picked from commit 8d69ec72a6)
2021-10-12 16:41:48 +05:30
Ankush Menat
5bdb6041b9 refactor: rollback after full test
(cherry picked from commit acdb26a4bb)
2021-10-12 16:41:48 +05:30
Ankush Menat
89828defc5 test: add custom TestCase class and use in stock
(cherry picked from commit 06fa35a9c1)
2021-10-12 16:41:48 +05:30
Deepesh Garg
816236b587 Merge pull request #27918 from frappe/mergify/bp/version-13-hotfix/pr-27884
fix: patch fails if accounts are frozen (backport #27884)
2021-10-12 15:04:01 +05:30
Deepesh Garg
69f17721ef Merge pull request #27917 from frappe/mergify/bp/version-13-hotfix/pr-27896
fix: Status check for closed loans (backport #27896)
2021-10-12 15:03:31 +05:30
Afshan
125bb1f99a Merge branch 'version-13-hotfix' into mergify/bp/version-13-hotfix/pr-27884 2021-10-12 14:32:36 +05:30
mergify[bot]
6f786b42a9 fix: add cost center in gl entry for advance payment entry (#27840) (#27915)
(cherry picked from commit 569dc5f6b1)

Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-10-12 14:31:50 +05:30
Saqib Ansari
fed80177de fix: rollback on exception
(cherry picked from commit c103f72fad)
2021-10-12 08:15:17 +00:00
Saqib Ansari
2ce36d1edc feat: handle exceptions
(cherry picked from commit 353ad5f6ff)
2021-10-12 08:15:17 +00:00
Saqib Ansari
7e44c30404 fix: patch fails if accounts are frozen
(cherry picked from commit b0aa4a6e1c)
2021-10-12 08:15:16 +00:00
Deepesh Garg
47ced6810f fix: Linting issues
(cherry picked from commit af14ba43de)
2021-10-12 08:11:47 +00:00
Deepesh Garg
6c3f5687f2 fix: Incorrect maximum loan amount update
(cherry picked from commit 8355af6dcf)
2021-10-12 08:11:47 +00:00
Deepesh Garg
1b632b683f fix: Status check for closed loans
(cherry picked from commit 3337ae120c)
2021-10-12 08:11:46 +00:00
mergify[bot]
c5660e8511 Merge pull request #27906 from Anuja-pawar/accounts-settings (#27912)
fix(Accounts Settings): Update label

(cherry picked from commit e1967870a9)

Co-authored-by: Anuja Pawar <60467153+Anuja-pawar@users.noreply.github.com>
2021-10-12 12:23:53 +05:30
mergify[bot]
c4338d184e fix(accounts): Fix issue with fetching loyalty point entries (#27892) (#27913)
(cherry picked from commit 401e22fb8d)

Co-authored-by: Chillar Anand <chillar@avilpage.com>
2021-10-12 12:23:32 +05:30
Noah Jacob
d598a61556 Merge pull request #27901 from frappe/mergify/bp/version-13-hotfix/pr-27800
refactor: updated buying onboarding tours. (backport #27800)
2021-10-11 16:33:59 +05:30
Noah Jacob
d262d0ac27 refactor: updated onboarding cards and tours
(cherry picked from commit f5e0cad6a1)
2021-10-11 10:04:40 +00:00
mergify[bot]
7dc2f95932 fix: v12 migrate error - unknown column ‘mandatory_depends_on’ (backport #27897) (#27900)
* fix: v12 migrate error - unknown column ‘mandatory_depends_on’ (#27897)

* fix: v12 doesn't have mandatory_depends_on field

* fix: move update_vehicle_no_reqd_condition to v13

* fix: move update_vehicle_no_reqd_condition to v13

* fix: file name missing .py

* refactor!: add back empty line

* fix: linters issue

(cherry picked from commit 7acdcc70ad)

# Conflicts:
#	erpnext/patches.txt

* fix: resolve conflicts

Co-authored-by: Dany Robert <rtdany10@gmail.com>
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-10-11 10:02:31 +00:00
rohitwaghchaure
cf87c9138e Merge pull request #27898 from frappe/mergify/bp/version-13-hotfix/pr-27863
fix: consolidated report not consider company currency (backport #27863)
2021-10-11 14:07:51 +05:30
Rohit Waghchaure
1a42f82d14 fix: opening balance to calculate 'Unclosed Fiscal Years Profit / Loss (Credit)'
(cherry picked from commit 19d14da0d4)
2021-10-11 08:37:27 +00:00
Rohit Waghchaure
2c5a0bff47 fix: consolidated report not consider company currency
(cherry picked from commit dc4206428d)
2021-10-11 08:37:26 +00:00
mergify[bot]
a831e6b552 fix: bom item query (backport #27890) (#27894)
* fix: bom item query #27890

fix: bom item query
(cherry picked from commit 0a3dd3e954)

# Conflicts:
#	erpnext/manufacturing/doctype/bom/test_bom.py

* fix: resolve conflict

* chore: unused imports

[skip ci]

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-10-11 12:45:24 +05:30
ChillarAnand
f844c36ab2 fix(CI): Use bugbear instead of flake8-mutable
(cherry picked from commit 4dc17a856e)
2021-10-11 11:23:22 +05:30
mergify[bot]
091c2f3023 fix(perf): index creation on voucher_detail_no (#27866) (#27875)
voucher_detail_no is supposed to have an index, it was added on
on_doctype_update function of table, however this function is only
called if DocType itself is updated and `on_update` is called on
DocType. Stock ledger Entry doctype hasn't changed since addition of
this index in function.

Before: Lack of this index was causing full table scan in
get_future_sle_to_fix function. (~50 seconds in a reposting job)

After: Single row is fetched (~0.5 second in full reposting job)

Learnings:
1. Add simple indexes via doctype only
2. For complex indexes always change doctype.json file for it to take
   effect.

(cherry picked from commit 6019f60d0a)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-10-08 17:19:41 +05:30
mergify[bot]
119c2f01e1 fix(perf): index creation on voucher_detail_no (#27866) (#27876)
voucher_detail_no is supposed to have an index, it was added on
on_doctype_update function of table, however this function is only
called if DocType itself is updated and `on_update` is called on
DocType. Stock ledger Entry doctype hasn't changed since addition of
this index in function.

Before: Lack of this index was causing full table scan in
get_future_sle_to_fix function. (~50 seconds in a reposting job)

After: Single row is fetched (~0.5 second in full reposting job)

Learnings:
1. Add simple indexes via doctype only
2. For complex indexes always change doctype.json file for it to take
   effect.

(cherry picked from commit 6019f60d0a)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-10-08 17:19:34 +05:30
gavin
40aac908d1 fix: Ignore mandatory fields if exist (#27871)
The goal of this fix is to not break the patch in case of customizations
In this particular case, it's regarding a customized Note DocType with
multiple custom mandatory fields
2021-10-08 15:10:03 +05:30
mergify[bot]
4e6d588ae1 fix: remove readonly from billing address (#27873)
(cherry picked from commit 41fefa356f)

Co-authored-by: 18alantom <2.alan.tom@gmail.com>
2021-10-08 15:08:45 +05:30
mergify[bot]
504f2f06d3 fix: Salary Slip Label fixes (backport #27865) (#27870)
* fix: Salary Slip Label fixes (#27865)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
(cherry picked from commit d3d4a3da62)

# Conflicts:
#	erpnext/payroll/doctype/salary_slip/salary_slip.json

* fix: conflicts

Co-authored-by: yadavyk <32797974+yadavyk@users.noreply.github.com>
Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-10-08 14:16:12 +05:30
mergify[bot]
d96fd60878 fix: update dead links in help_links.js (#27860) (#27868)
(cherry picked from commit 90a249527d)

Co-authored-by: Kenneth Sequeira <33246109+kennethsequeira@users.noreply.github.com>
2021-10-08 13:31:07 +05:30
Deepesh Garg
d9a219850a fix: SO delivery Date not getting set via data import (#27862)
* fix: SO delivery Date not getting set via data import

* fix: logic to add delivery dates

* fix: linting issue

Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
Co-authored-by: Afshan <afshan13k@gmail.com>
2021-10-08 12:38:40 +05:30
mergify[bot]
cb6d884058 fix(Payment Reconciliation): minor ux fixes (#27779) (#27859)
* fix: minor fixes

* fix: Linters check

* fix: sider check

* fix: kept unallocated payment amount hidden in allocation

* fix: removed Add row button from the tables (redundant)

Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
(cherry picked from commit 5cc3ea0aa7)

Co-authored-by: Anuja Pawar <60467153+Anuja-pawar@users.noreply.github.com>
2021-10-07 22:47:05 +05:30
mergify[bot]
4102f799dc fix: trim sales invoice custom field lengths (backport #27665) (#27750)
* fix: trim sales invoice custom field lengths

(cherry picked from commit a7df4227da)

* patch: trim sales invoice custom field lengths

(cherry picked from commit f1fcb385f5)

# Conflicts:
#	erpnext/patches.txt

* fix: do not set length for date field

(cherry picked from commit 83cc597594)

* fix: merge conflicts

Co-authored-by: Saqib Ansari <nextchamp.saqib@gmail.com>
Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-10-07 20:59:07 +05:30
Subin Tom
3c53c5b660 fix: cancelled sales invoices are considered in billed quantity calculation (#27845)
Co-authored-by: Saqib Ansari <nextchamp.saqib@gmail.com>
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-10-07 20:36:00 +05:30
mergify[bot]
0a4b3d8129 fix: help links for purchase cycle and JV (#27856) (#27858)
(cherry picked from commit 07c680d7cc)

Co-authored-by: Kenneth Sequeira <33246109+kennethsequeira@users.noreply.github.com>
2021-10-07 20:29:28 +05:30
mergify[bot]
bad489426a feat: (Stock Reco) Ignore Empty Stock while fetching items from warehouse (#27848)
- Added checkbox to `Fetch Items from Warehouse` dialog to ignore empty stock
- fix: Items fetched twice due to Item Defaults
- Improved code readability

(cherry picked from commit 533ee9a401)

Co-authored-by: marination <maricadsouza221197@gmail.com>
2021-10-07 20:28:08 +05:30
mergify[bot]
729e29d268 fix: update help links for Sales Invoice page (#27853) (#27854)
(cherry picked from commit 646fd29f0e)

Co-authored-by: Kenneth Sequeira <33246109+kennethsequeira@users.noreply.github.com>
2021-10-07 18:42:06 +05:30
rohitwaghchaure
8108d4761b Merge pull request #27852 from frappe/mergify/bp/version-13-hotfix/pr-27851
feat: option to set the width for the multi-select dialog box (backport #27851)
2021-10-07 17:39:20 +05:30
Rohit Waghchaure
00cb04df84 feat: option to set the width for the multi-select dialog box
(cherry picked from commit 69ffddf747)
2021-10-07 12:08:58 +00:00
mergify[bot]
dd0cefbeb9 refactor: Clean up mutable defaults and add CI check (#27828) (#27841)
* refactor: Clean up mutable defaults and add CI check

(cherry picked from commit 772d4753e7)

Co-authored-by: Chillar Anand <chillar@avilpage.com>
2021-10-07 09:57:35 +00:00
Rohit Waghchaure
d11c215f85 Merge branch 'version-13-pre-release' into version-13 2021-10-07 11:35:31 +05:30
Rohit Waghchaure
5ea5bfad3d bumped to version 13.12.1 2021-10-07 11:55:31 +05:50
Anoop
4da5cb36e7 Merge pull request #27812 from akurungadam/fix-appointment-slots
fix(healthcare): Availability slots display, disabled Practitioner Schedule
2021-10-07 08:45:56 +05:30
mergify[bot]
56b58cbeea fix: use ceil in case of whole uoms for reorder qty (#27834) (#27838)
* fix: use ceil in case of whole uoms for reorder qty

* fix: cache uom query

(cherry picked from commit d4b2471cea)

Co-authored-by: Alan <2.alan.tom@gmail.com>
2021-10-06 18:54:22 +05:30
Marica
cd87931cee Merge pull request #27833 from frappe/mergify/bp/version-13-pre-release/pr-27713
fix: Maintenance Schedule child table status for legacy data (backport #27713)
2021-10-06 14:08:15 +05:30
Marica
355ae1fca6 Merge branch 'version-13-pre-release' into mergify/bp/version-13-pre-release/pr-27713 2021-10-06 13:42:46 +05:30
mergify[bot]
91baa22d59 fix: remove stale doctypes and add msg for ecommerce refactor (bp #27700)
(cherry picked from commit 6d99bb5ce6)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-10-06 13:37:26 +05:30
marination
af57e1e299 fix: reload doc in patch
(cherry picked from commit 6b38778dcb)
2021-10-06 07:57:22 +00:00
marination
1d3ba46107 fix: Add patch to patches.txt
(cherry picked from commit 7c47f36a4c)
2021-10-06 07:57:22 +00:00
Marica
65a590ced1 fix: Maintenance Schedule child table status for legacy data (#27554)
* fix: Maintenance Schedule child table status for legacy data

* fix: Include legacy draft schedules in patch

* fix: Pre-commit formatting

(cherry picked from commit cc143bca0d)
(cherry picked from commit 6ce2111b6d)
2021-10-06 07:57:21 +00:00
Marica
1a68e10742 Merge pull request #27829 from frappe/mergify/bp/version-13-pre-release/pr-27715
fix: Batch scans get overwritten on the same row (backport #27668) (backport #27715)
2021-10-06 12:57:39 +05:30
Marica
71f676eedd Merge pull request #27764 from frappe/mergify/bp/version-13-hotfix/pr-27661
refactor: fetching of account balance in chart of accounts (backport #27661)
2021-10-06 12:56:10 +05:30
mergify[bot]
4fe827e86b Merge pull request #27715 from frappe/mergify/bp/version-13-hotfix/pr-27668
fix: Batch scans get overwritten on the same row (backport #27668)
(cherry picked from commit 15c9c08261)
2021-10-06 07:13:00 +00:00
Deepesh Garg
f573840c9f Merge pull request #27801 from frappe/mergify/bp/version-13-pre-release/pr-27524
fix: Tax breakup based on items, missing GST fields (backport #27524)
2021-10-06 09:33:30 +05:30
Rohit Waghchaure
0bc83deca0 Merge branch 'version-13-pre-release' into version-13 2021-10-06 00:26:31 +05:30
Rohit Waghchaure
696a01765b bumped to version 13.12.0 2021-10-06 00:46:31 +05:50
rohitwaghchaure
047debffeb Merge pull request #27825 from rohitwaghchaure/v13_12_0-change-log
chore: change log for v13_12_0
2021-10-06 00:02:19 +05:30
mergify[bot]
e57037b4cf ci: fail build if asset bundling fails (#27820) (#27823)
(cherry picked from commit 35e30bdcaf)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-10-05 23:59:47 +05:30
Rohit Waghchaure
633cd0c1a8 chore: change log for v13_12_0 2021-10-05 23:44:32 +05:30
Deepesh Garg
51b2fcc8ef fix: Update setup.py 2021-10-05 21:05:12 +05:30
Deepesh Garg
ff062d501f fix: Update patches.txt 2021-10-05 21:03:40 +05:30
mergify[bot]
2cbd5a9fcf fix: removed redundant piece of code (#27817) (#27821)
(cherry picked from commit cec66d2d10)

Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-10-05 19:26:58 +05:30
mergify[bot]
89e421a01d fix: removed redundant piece of code (#27817) (#27822)
(cherry picked from commit cec66d2d10)

Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-10-05 19:24:40 +05:30
Noah Jacob
287a7b29e1 Merge pull request #27815 from frappe/mergify/bp/version-13-pre-release/pr-27813
fix: ignore random periodicity in validations (backport #27813)
2021-10-05 17:32:09 +05:30
Noah Jacob
47a7eeca54 Merge pull request #27814 from frappe/mergify/bp/version-13-hotfix/pr-27813
fix: ignore random periodicity in validations (backport #27813)
2021-10-05 17:30:00 +05:30
Ankush Menat
a09647b3c8 fix: ignore random periodicity in validations
(cherry picked from commit 3d3655ed73)
2021-10-05 11:38:06 +00:00
Ankush Menat
62bbf0fe45 fix: ignore random periodicity in validations
(cherry picked from commit 3d3655ed73)
2021-10-05 11:28:34 +00:00
Marica
ae8c1ae311 Merge pull request #27803 from frappe/mergify/bp/version-13-hotfix/pr-27660
fix: tax rate being overridden in case of 0.00 (backport #27660)
2021-10-05 16:44:16 +05:30
Deepesh Garg
c1c5aa7262 Merge pull request #27810 from frappe/mergify/bp/version-13-pre-release/pr-27792
fix: COA Importer showing blank validations (backport #27792)
2021-10-05 15:39:29 +05:30
Deepesh Garg
b4f06c0d77 fix: Use get_list instead of get_all to avoid perm issues
(cherry picked from commit 9507b2d752)
2021-10-05 09:48:42 +00:00
Deepesh Garg
758939eddb fix: COA Importer showing blank validations
(cherry picked from commit 0660d6ed01)
2021-10-05 09:48:42 +00:00
Deepesh Garg
8f5ab94b70 Merge pull request #27792 from deepeshgarg007/pre-release-fixes
fix: COA Importer showing blank validations
2021-10-05 15:18:04 +05:30
mergify[bot]
fa944382c5 fix: using DN for transfer w/o internal customer (backport #27798) (#27805)
* fix: using DN for transfer w/o internal customer (#27798)

This used to be work before though not "advertised", since a lot of
users have started using it as feature, it can't be broken now.

(cherry picked from commit df1f8fddf6)

* fix(ux): use toast instead of popup

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-10-05 14:53:26 +05:30
Deepesh Garg
9507b2d752 fix: Use get_list instead of get_all to avoid perm issues 2021-10-05 14:51:35 +05:30
mergify[bot]
7e018f94ce fix: batch_no not mapped from PR to Stock Entry (#27804)
(cherry picked from commit 9613af6c4e)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2021-10-05 14:39:36 +05:30
Ankush Menat
2cfafede44 fix(ux): use toast instead of popup 2021-10-05 14:27:09 +05:30
Ankush Menat
df1f8fddf6 fix: using DN for transfer w/o internal customer (#27798)
This used to be work before though not "advertised", since a lot of
users have started using it as feature, it can't be broken now.
2021-10-05 14:21:27 +05:30
Dany Robert
a17fed9cd9 fix: return tax rate since fetch is removed
(cherry picked from commit 2b4959fb3b)
2021-10-05 08:45:24 +00:00
Dany Robert
d8479a41e5 fix: tax rate being overridden in case of 0.00
Tax rate could be different for different expenses.
Therefore, rate is kept as 0.00 and tax amount entered manually.
But fetching used to override the rate(upon saving) and mess up the amount.

(cherry picked from commit 5ce6a4c107)
2021-10-05 08:45:23 +00:00
Subin Tom
b1244df045 fix: Tax breakup based on items, missing GST fields (#27524)
* fix: Tax breakup based on items

* fix: added gst fields,warehouse validation to pos inv,patch

* fix: tax breakup test fix, eway bill hsn fix

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
(cherry picked from commit d49346ac45)

# Conflicts:
#	erpnext/patches.txt
#	erpnext/regional/india/setup.py
2021-10-05 08:44:31 +00:00
Deepesh Garg
d2f5d31f98 Merge pull request #27559 from frappe-pr-bot/backport/version-13-hotfix/27524
fix: Tax breakup based on items, missing GST fields
2021-10-05 14:13:50 +05:30
Deepesh Garg
28aa9a7215 Merge pull request #27761 from frappe/mergify/bp/version-13-pre-release/pr-27712
fix(India): Internal transfer check fix (backport #27712)
2021-10-05 14:10:57 +05:30
Deepesh Garg
44ee44dec5 Merge pull request #27786 from frappe/mergify/bp/version-13-hotfix/pr-27785
fix: Delete linked Transaction Deletion Record docs on deleting company (backport #27785)
2021-10-05 14:09:16 +05:30
mergify[bot]
bebd77c27d fix: add (uom, brand) Item details in an Item Price (#27561) (#27795)
* fix: add (uom, brand) and update (uom) Item details in an Item Price

* fix: order of query interpolation args

Co-authored-by: Marica <maricadsouza221197@gmail.com>

* fix: named interpolation, remove item price

* fix: sql error

Co-authored-by: Marica <maricadsouza221197@gmail.com>
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
(cherry picked from commit 7da777880b)

Co-authored-by: Alan <2.alan.tom@gmail.com>
2021-10-05 13:28:43 +05:30
Afshan
0c55a98190 Merge branch 'version-13-hotfix' into mergify/bp/version-13-hotfix/pr-27785 2021-10-05 13:26:47 +05:30
mergify[bot]
32d72fdecb fix: Only calculate first_respone_time if SLA is set (#27789) (#27793)
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
(cherry picked from commit ad03eb25df)

Co-authored-by: Ganga Manoj <ganga.manoj98@gmail.com>
2021-10-05 12:49:06 +05:30
mergify[bot]
046ec928e0 fix: Display appropriate message if different Payment Terms are used in PE and its Payment References (#27763)
(cherry picked from commit 9f14695743)

Co-authored-by: GangaManoj <ganga.manoj98@gmail.com>
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-10-05 12:21:21 +05:30
Deepesh Garg
0660d6ed01 fix: COA Importer showing blank validations 2021-10-05 12:20:14 +05:30
Afshan
877820b902 Merge branch 'version-13-hotfix' into mergify/bp/version-13-hotfix/pr-27785 2021-10-05 11:50:25 +05:30
mergify[bot]
ab0e381cfc fix(asset): expected value after useful life validation (#27539) (#27790)
(cherry picked from commit 065a2ce983)

Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
2021-10-05 11:47:56 +05:30
Saqib
5e34cdf00f Merge branch 'version-13-hotfix' into mergify/bp/version-13-hotfix/pr-27661 2021-10-05 11:34:02 +05:30
Saqib
953073bc77 fix(asset): expected value after useful life validation (#27787) 2021-10-05 11:13:50 +05:30
GangaManoj
4ecb798585 fix: Delete linked Transaction Deletion Record docs on deleting company
(cherry picked from commit 38c7e42f0c)
2021-10-05 05:19:37 +00:00
mergify[bot]
91d269fe1a fix: set item uom as stock_uom if it isn't set (#27623) (#27780)
* fix: set item uom as stock_uom if it isn't set

(cherry picked from commit 5c372202d5)

Co-authored-by: Alan <2.alan.tom@gmail.com>
2021-10-04 22:41:12 +05:30
mergify[bot]
4535a9415f ci(Mergify): configuration update (#27777) (#27778)
Signed-off-by: Ankush Menat <me@ankush.dev>
(cherry picked from commit 4159361d52)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-10-04 18:10:52 +05:30
Sagar Vora
e17713c9d6 fix: multiple fixes to timesheets (#27775) 2021-10-04 17:08:50 +05:30
mergify[bot]
21a5498d5d fix: Merge "Accounting Ledger" and "Accounts Receivable" in "View" button (#27769) (#27771)
* fix: Added a new button "View" and merged "Accounting Ledger" and "Accounts Receivable" into it

* fix: sider issues

* chore: dead code

(cherry picked from commit b483f173a6)

Co-authored-by: Komal-Saraf0609 <81952590+Komal-Saraf0609@users.noreply.github.com>
2021-10-04 16:06:55 +05:30
Saqib
c0b17edbbf perf: fetching of account balance in chart of accounts (#27661)
(cherry picked from commit 9051735529)
2021-10-04 06:15:34 +00:00
Deepesh Garg
e6909a0899 fix(India): Internal transfer check fix
(cherry picked from commit f0af24fc6d)
2021-10-04 05:31:59 +00:00
Marica
68cce8eb98 Merge pull request #27757 from frappe/mergify/bp/version-13-pre-release/pr-27720
fix: Website Items with same Item name unhandled, thumbnails missing (backport #27720)
2021-10-03 14:46:18 +05:30
Marica
869c1beb0a Merge pull request #27744 from frappe/mergify/bp/version-13-pre-release/pr-27611
fix: Hero Slider Control & Alignment fixes (backport #27611)
2021-10-03 14:29:39 +05:30
Marica
e9ed379b57 Merge pull request #27743 from frappe/mergify/bp/version-13-hotfix/pr-27611
fix: Hero Slider Control & Alignment fixes (backport #27611)
2021-10-03 14:29:18 +05:30
marination
a453fc6385 fix: Pre-commit formatting
(cherry picked from commit 77d4849ce8)
2021-10-03 08:57:13 +00:00
marination
00978a195a fix: Website Items with same Item name unhandled, thumbnails missing
- Use naming series for Website Item. There could be two items with same name and different item code
- Fix: Website Item Page view breaks if cart is disabled
- Fix: thumbnails not created for Website Items after patch
- Fix: ‘Request for Quote’ button & cart summary not visible if checkout is disabled

(cherry picked from commit 36b519c962)
2021-10-03 08:57:12 +00:00
Marica
4d0d642db7 Merge pull request #27720 from marination/e-comm-web-item-name-thumbnail-fix
fix: Website Items with same Item name unhandled, thumbnails missing
2021-10-03 14:26:20 +05:30
Deepesh Garg
f02438eb54 Merge pull request #27712 from deepeshgarg007/internal_transfer_check_fix
fix(India): Internal transfer check fix
2021-10-03 13:38:51 +05:30
Marica
62fa1f0305 Merge branch 'version-13-hotfix' into e-comm-web-item-name-thumbnail-fix 2021-10-03 13:30:50 +05:30
marination
77d4849ce8 fix: Pre-commit formatting 2021-10-03 13:30:02 +05:30
Deepesh Garg
66286881f3 Merge pull request #27752 from frappe/mergify/bp/version-13-pre-release/pr-27748
fix: Chart Of Accounts import button not visible (backport #27748)
2021-10-02 22:16:15 +05:30
Deepesh Garg
c2e4bbe9cc fix: Linting issues
(cherry picked from commit ff570f48a0)
2021-10-02 16:10:41 +00:00
Deepesh Garg
02984551ce fix: Remove unwanted comments
(cherry picked from commit e4b89d2fcd)
2021-10-02 16:10:40 +00:00
Deepesh Garg
42f0a97d26 fix: Chart Of Accounts import button not visible
(cherry picked from commit 3529622a0d)
2021-10-02 16:10:39 +00:00
Deepesh Garg
fe4df3a14a Merge pull request #27748 from deepeshgarg007/yet_chart_of_accounts_importer_fixes
fix: Chart Of Accounts import button not visible
2021-10-02 21:39:07 +05:30
Deepesh Garg
ff570f48a0 fix: Linting issues 2021-10-02 20:46:20 +05:30
Deepesh Garg
e4b89d2fcd fix: Remove unwanted comments 2021-10-02 20:37:15 +05:30
Deepesh Garg
3529622a0d fix: Chart Of Accounts import button not visible 2021-10-02 20:35:11 +05:30
Shariq Ansari
477d36413b chore: linter fix
(cherry picked from commit 18918e1b4f)
2021-10-02 11:39:01 +00:00
Shariq Ansari
b5fc3076bf fix: Fixed alignment of Title, Subtitle, Action Button
(cherry picked from commit 0de735f20b)
2021-10-02 11:39:00 +00:00
Shariq Ansari
2c9162160a fix: Creating unique hash for slider id instead of slider name
(cherry picked from commit 3e8e6ac4e2)
2021-10-02 11:38:59 +00:00
Shariq Ansari
8f98238114 chore: linter fix
(cherry picked from commit 18918e1b4f)
2021-10-02 11:38:31 +00:00
Shariq Ansari
86e3adf344 fix: Fixed alignment of Title, Subtitle, Action Button
(cherry picked from commit 0de735f20b)
2021-10-02 11:38:31 +00:00
Shariq Ansari
d6152df3b4 fix: Creating unique hash for slider id instead of slider name
(cherry picked from commit 3e8e6ac4e2)
2021-10-02 11:38:30 +00:00
Anurag Mishra
4837238f3d feat(HR): Some Enhancements and Onboarding (#25741)
* feat: Hr settings restructure

* feat: remove validation and make As warning

* feat: made leave policy Assignment feild read only

* feat: send leave Notification via 'Notification'

* patch: for field name change

* feat: removed defaults value for removed field

* feat: removed leave Notification fields

* feat: better label and description

* feat: Hr Module onboarding and Onboarding slides

* fix: sider, test, translations

* chore: remove unnecessary code formatting changes

* refactor: HR Onboarding

* refactor: HR Settings

* revert: Notification changes

* chore: remove unnecessary descriptions from leave type

* fix: linter issues

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-10-02 12:34:21 +05:30
mergify[bot]
e4f12f0458 fix: update variant qty in BOM, Create Work Order dialog (#27686) (#27732)
(cherry picked from commit ece446ffe5)

Co-authored-by: Alan <2.alan.tom@gmail.com>
2021-10-01 23:21:08 +05:30
mergify[bot]
3e7a029869 fix: option to limit reposting in certain timeslot (bp #27725)
(cherry picked from commit a04f9c904e)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-10-01 16:50:05 +05:30
mergify[bot]
23431cf261 fix: option to limit reposting in certain timeslot (#27725) (#27726)
(cherry picked from commit a04f9c904e)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-10-01 13:56:00 +05:30
Anurag Mishra
57e66f958c feat: Tracking Multi-round interview (#25482)
* feat: Tracking Multi-round interview

* fix: releted to scheduler event and formating

* fix: job applicant UI/UX and conflicts

* test: Interview Round

* fix(test): Employee referral, Employee Onboarding, Job Offer

* fix: sider

* feat: set default value in Hr settings

* feat: added validation for designation

* test: Interview

* test: Added validatiolns for skill

* test: Interview feedback

* fix: sider

* fix: remove unnecessary validations and form label cleanups

* chore: clean-up Interview Round and Interview Type doctype

* fix: remove redundant Rating Value, only keep Rating

* fix: update interview details on feedback submission

- make interview feedback submission dialog minimizable

* fix: show submit feedback button only if feedback doesn't exist

* refactor: Interview and Feedback statuses and workflow

* fix(HR Settings): clean up interview settings

* refactor: Interview

* refactor: Interview Feedback, remove unnecessary validations

* chore: update notification messages

* chore: remove unnecessary formatting changes in attendance list and leave application

* refactor: Job Applicant to Interview mapping

* chore: sorted imports

* chore: sorted imports

* fix: sider issues

* fix: linter issues

* fix: sider issues

* fix: tests

* fix: sorted imports

* fix: tests, sider

* fix: therapy plan test

* fix: sider issues

* feat: Include From Time and To Time fields in Interview for cleaner data

* feat: Interview Calendar

* fix: allow renaming masters

* fix: add more fields to list view and standard filter

* fix: validate overlapping interviews

* fix: update tests

* fix: linter issues

* refactor: replace reminder messages with Email Templates

* fix: sider issues

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-10-01 00:10:47 +05:30
mergify[bot]
05374cb8b2 fix(Org Chart): use attribute selectors instead of ID selector for node IDs with special characters (#27717) (#27718)
* fix(Org Chart): use attribute selectors instead of ID selector for node IDs with special chars

* fix: UI tests

(cherry picked from commit 9e08229b7b)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-09-30 18:45:22 +05:30
mergify[bot]
f572a4e0e5 fix(Org Chart): use attribute selectors instead of ID selector for node IDs with special characters (#27717) (#27719)
* fix(Org Chart): use attribute selectors instead of ID selector for node IDs with special chars

* fix: UI tests

(cherry picked from commit 9e08229b7b)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-09-30 18:44:55 +05:30
marination
36b519c962 fix: Website Items with same Item name unhandled, thumbnails missing
- Use naming series for Website Item. There could be two items with same name and different item code
- Fix: Website Item Page view breaks if cart is disabled
- Fix: thumbnails not created for Website Items after patch
- Fix: ‘Request for Quote’ button & cart summary not visible if checkout is disabled
2021-09-30 18:34:26 +05:30
rohitwaghchaure
348f082490 Merge pull request #27716 from rohitwaghchaure/merge-v13-hotfix-to-pre-release
chore: Merge branch 'version-13-hotfix' into 'version-13-pre-release'
2021-09-30 18:07:47 +05:30
Rohit Waghchaure
49174cd414 chore: Merge branch 'version-13-hotfix' into 'version-13-pre-release' 2021-09-30 16:59:18 +05:30
mergify[bot]
15c9c08261 Merge pull request #27715 from frappe/mergify/bp/version-13-hotfix/pr-27668
fix: Batch scans get overwritten on the same row (backport #27668)
2021-09-30 16:34:11 +05:30
Marica
5d1de91b68 Merge pull request #27713 from frappe-pr-bot/backport/version-13-hotfix/27554
fix: Maintenance Schedule child table status for legacy data
2021-09-30 15:57:27 +05:30
Marica
cf6e10ac7b Merge branch 'version-13-hotfix' into backport/version-13-hotfix/27554 2021-09-30 15:55:04 +05:30
Ankush Menat
6d99bb5ce6 fix: remove stale doctypes and add msg for ecommerce refactor (#27700) 2021-09-30 15:49:26 +05:30
marination
6b38778dcb fix: reload doc in patch 2021-09-30 14:55:57 +05:30
marination
7c47f36a4c fix: Add patch to patches.txt 2021-09-30 14:18:35 +05:30
Marica
6ce2111b6d fix: Maintenance Schedule child table status for legacy data (#27554)
* fix: Maintenance Schedule child table status for legacy data

* fix: Include legacy draft schedules in patch

* fix: Pre-commit formatting

(cherry picked from commit cc143bca0d)
2021-09-30 08:39:55 +00:00
Deepesh Garg
f0af24fc6d fix(India): Internal transfer check fix 2021-09-30 13:28:53 +05:30
Mohammed Yusuf Shaikh
b478e72cef fix: wrong company selected when marking attendance for all employees (#27685)
* fix: wrong company selected when marking attendance for all employees

* fix: enable caching for repeated queries of the same employee

Co-authored-by: Ankush Menat <ankushmenat@gmail.com>

Co-authored-by: Ankush Menat <ankushmenat@gmail.com>
2021-09-30 12:02:39 +05:30
mergify[bot]
471a8ddce0 fix: distribution of additional costs in mfg stock entry (#27629) (#27706)
* refactor: remove unnecessary list comprehensions

* fix: correct cost distribution logic

While apportioning costs same condition should be present on both sides
so total value is representative of all items to be apportioned.

Here while calculating incoming_items_cost only FG items are considered,
but while apportioning all items with to_warehouse are considered.

Solution: only apportion additional cost on FG items

* test: test cost distribution

* fix: patch for additional cost

fix(patch): consider PCV while patching

- consider Period closing voucher while patching
- recomute rates for SLE of affected stock entries

consider only FG/scrap item SLEs for recomputation of rates

* fix: remove client side logic for addn cost

All of this is done in python code hence removed client side code.

(cherry picked from commit 4685ed5a8c)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-30 11:20:09 +05:30
Deepesh Garg
7fc7405be7 fix: Deferred revenue entries post account freezing (#27551)
* fix: Deferred revenue entries post account freezing

* fix: Test Case

* fix: Test case
2021-09-30 08:35:30 +05:30
rohitwaghchaure
26c16412bb Merge pull request #27702 from frappe/mergify/bp/version-13-hotfix/pr-27701
fix: added project name in the purchase order analysis (backport #27701)
2021-09-29 23:43:54 +05:30
Rohit Waghchaure
c8396f4970 fix: added project name in the purchase order analysis
(cherry picked from commit c1f9997a67)
2021-09-29 18:13:25 +00:00
Deepesh Garg
aeffaf312a Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into deferred_entry_freeze_v13 2021-09-29 22:27:02 +05:30
Deepesh Garg
23863c7663 fix: Test case 2021-09-29 22:26:33 +05:30
Frappe PR Bot
887e3765bf feat: TDS deduction using journal entry and other fixes (#27451) (#27672)
* fix: TDS deduction using journal entry

* fix: Multi category application against single supplier

* refactor: TDS payable monthly report

* fix: Server side handling for default tax withholding category

* fix: Supplier filter for Journal Entry

* refactor: TDS computation summary report

(cherry picked from commit cc5dd5c67d)

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-09-29 20:26:43 +05:30
Frappe PR Bot
633847c514 fix: Ignore user permission for Represents Company field in Sales and Purchase docs (#27684) (#27695)
* fix: Ignore user permission for Represents Company field in Sales and Purchase docs

* fix: Ignore user permission for fiscal year company

(cherry picked from commit b39f8a6215)

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-09-29 20:26:16 +05:30
Deepesh Garg
72986abab9 Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into deferred_entry_freeze_v13 2021-09-29 16:13:28 +05:30
mergify[bot]
6b32fa7b1c feat(regional): toggle for reduced depreciation rate as per IT Act (#27688) 2021-09-28 19:48:50 +05:30
Frappe PR Bot
212492220d fix: cannot delete a project if linked with sales order (#27536) (#27689) 2021-09-28 19:46:35 +05:30
Frappe PR Bot
fbae3c7fd6 fix: apply price list after batch or serial no insertion (#27566) (#27683)
(cherry picked from commit 72c081fd8f)

Co-authored-by: Alan <2.alan.tom@gmail.com>
2021-09-28 12:59:45 +05:30
Frappe PR Bot
745abef0e7 fix: set item.qty as mandatory in picklist (#27680) (#27682)
(cherry picked from commit b91333afdd)

Co-authored-by: Alan <2.alan.tom@gmail.com>
2021-09-28 12:24:55 +05:30
Frappe PR Bot
1acdadea00 fix(ux): added exception of template item in filters (#27560) (#27675)
(cherry picked from commit 5c249decbb)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2021-09-27 23:01:14 +05:30
mergify[bot]
2ee9da3504 fix: cannot set custom label for 'total' field in print format (#27667) 2021-09-27 15:03:16 +05:30
Deepesh Garg
6eb9a114be Merge branch 'version-13-hotfix' into backport/version-13-hotfix/27524 2021-09-27 14:55:32 +05:30
Frappe PR Bot
e8de8b8454 fix: Improvements in COA Importer (#27584) (#27587)
(cherry picked from commit f07ff92a35)

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-09-27 14:53:51 +05:30
Frappe PR Bot
1b9e96f760 fix: Tax Breakup table headers fix (#27596) (#27598)
(cherry picked from commit 0ff7367f39)

Co-authored-by: Subin Tom <36098155+nemesis189@users.noreply.github.com>
Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
2021-09-27 14:53:29 +05:30
Saqib
0e59873cc0 Merge pull request #27663 from frappe/mergify/bp/version-13-hotfix/pr-27659
fix: setting of gain/loss if party account is in company currency (backport #27659)
2021-09-27 14:29:25 +05:30
Saqib
1063ced7cd fix: linting errors
(cherry picked from commit 711395db22)
2021-09-27 07:36:17 +00:00
Saqib
904c592978 fix: indentation
(cherry picked from commit 1f8ad72418)
2021-09-27 07:36:16 +00:00
Saqib
7a8ff85308 chore: log modified invoices
(cherry picked from commit 30f59b09fd)
2021-09-27 07:36:16 +00:00
Saqib Ansari
8a8921fb5b fix: unknown column 'ref_exchange_rate'
(cherry picked from commit 18e5d59d24)
2021-09-27 07:36:15 +00:00
Saqib Ansari
705f094a1a chore: hide exchange gain loss if empty
(cherry picked from commit e6b4d33f4b)
2021-09-27 07:36:15 +00:00
Saqib Ansari
19b06b0745 patch: invalid gain loss gl entry
(cherry picked from commit beebfb323a)
2021-09-27 07:36:15 +00:00
Saqib Ansari
2108bf9f73 fix: cost center in exchange gain loss gl entry
(cherry picked from commit 78ad50efc2)
2021-09-27 07:36:14 +00:00
Saqib Ansari
677a59b005 chore: hide exchange gain loss if empty
(cherry picked from commit dd2d039ca8)
2021-09-27 07:36:13 +00:00
Saqib Ansari
af531372da fix: setting of gain/loss if party account is in company currency
(cherry picked from commit 64efe8bf15)
2021-09-27 07:36:13 +00:00
Frappe PR Bot
986ca8815d fix: local variable 'fiscal_year_details' referenced before assignment (#27658) 2021-09-26 20:28:06 +05:30
Frappe PR Bot
646f8b7871 fix: update default KSA VAT rate for setup (#27614) (#27622)
(cherry picked from commit abded895f3)

Co-authored-by: Kenneth Sequeira <33246109+kennethsequeira@users.noreply.github.com>
2021-09-26 11:14:20 +05:30
Frappe PR Bot
08e24bd907 fix: holiday message reminder (#27654)
Minor grammatical change

(cherry picked from commit dafe99b6e2)

Co-authored-by: escix <preminik@preminik.com>
2021-09-26 11:12:48 +05:30
Frappe PR Bot
e5a062ceb6 feat: add Partly Paid status in Invoices (#27636)
(cherry picked from commit c8b9a55e96)

Co-authored-by: Sagar Vora <sagar@resilient.tech>
2021-09-22 12:17:58 +05:30
Bhavesh Maheshwari
9ebabb86b3 fix: remove unknown field employee_name from query (#27634)
* fix: remove unknown field employee_name from query

* fix: remove unknown fieldname

Co-authored-by: root <root@vultr.guest>
Co-authored-by: Ankush Menat <ankushmenat@gmail.com>
2021-09-21 20:30:53 +05:30
Frappe PR Bot
5a8d57f2ae fix: remove bad default for anniversary reminders (#27632) (#27633)
🤦

(cherry picked from commit c302c7ab42)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-21 17:55:05 +05:30
Frappe PR Bot
47c6fba317 fix: (ux) Use subassembly schedule date while making WO from Prod Plan (bp #27628)
- Set subassemply WO's planned start date from Production Plan

(cherry picked from commit 9110223341)

Co-authored-by: Marica <maricadsouza221197@gmail.com>
2021-09-21 17:12:45 +05:30
Frappe PR Bot
19446a8ddd feat: Merge POS invoices based on customer group (#27553)
* feat: Merge POS invoices based on customer group (#27471)

* feat: Merge POS invoices based on customer group

* fix: Linting Issues

* fix: fieldname

Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
(cherry picked from commit c9c8957250)

# Conflicts:
#	erpnext/patches.txt

* fix: Update patches.txt

* fix: Remove v14 patch

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-09-21 11:17:44 +05:30
Frappe PR Bot
fec19a9532 Update training_result.js (#27615) (#27620)
cur_frm is deprecated

(cherry picked from commit 5c400da4e2)

Co-authored-by: François de Ryckel <f.deryckel@gmail.com>
2021-09-21 09:32:18 +05:30
mergify[bot]
6ba1b03ee5 fix: reference row added in allocation table (#27613) 2021-09-20 21:37:55 +05:30
Ganga Manoj
1ba4afa986 fix: Set parent_detail_docname to prevent overwriting Packed/Bundle Items on saving (#27571) 2021-09-20 21:36:07 +05:30
mergify[bot]
10cffe81b0 fix: Webform Permission for custom doctype (backport #26232) (#27592)
* fix: Webform Permission for custom doctype (#26232)

* fix: Webform Permission for custom doctype

* fix: sider fix

* fix: app check condition for getting correct list_context

* chore: Better naming convention

* test: Added test case to check permission for webform of custom doctype

* chore: linting issue

* chore: linting issue

* fix: sider fix

* test: minor changes

* chore: linter and better naming method

* chore: linter fix

(cherry picked from commit 9aa6f52edd)

# Conflicts:
#	erpnext/hooks.py

* chore: Resolved Conflicts

Co-authored-by: Shariq Ansari <30859809+shariquerik@users.noreply.github.com>
2021-09-20 20:28:29 +05:30
Ankush Menat
72c22a4219 Merge pull request #27604 from frappe/mergify/bp/version-13-hotfix/pr-27601
fix(ux): warn when overbilling allowance was bypassed due to role (backport #27601)
2021-09-20 18:17:40 +05:30
Ankush Menat
684ca451d3 fix(ux): better error message
Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
(cherry picked from commit 21a955d20b)
2021-09-20 12:13:37 +00:00
Ankush Menat
8cdd6eacdd refactor: add guard clause in for loop
Reduce overly indented code/improve readability.

(cherry picked from commit 5e4fbba753)
2021-09-20 12:13:37 +00:00
Ankush Menat
2dc590c0c0 fix: warn when overbilling checks are skipped.
(cherry picked from commit 43bf82b58b)
2021-09-20 12:13:36 +00:00
Ankush Menat
55393d160d perf: extract loop invariant db calls
(cherry picked from commit 648b2d72a5)
2021-09-20 12:13:36 +00:00
Frappe PR Bot
9b46dd512b fix(plaid): query to check if bank account exists (#27595) 2021-09-20 15:45:13 +05:30
Saqib
7aaecbcac9 fix: Move related fields together in Selling Settings (#27383) 2021-09-20 15:30:50 +05:30
Deepesh Garg
846d128c5d fix: Test Case 2021-09-20 11:06:10 +05:30
Rohit Waghchaure
c800ff5068 Merge branch 'version-13-pre-release' into version-13 2021-09-19 14:39:45 +05:30
Rohit Waghchaure
de8b3570f5 bumped to version 13.11.1 2021-09-19 14:59:45 +05:50
Frappe PR Bot
5978286b52 fix: Handle is_search_module_loaded for redis version < 4.0.0 (#27574) (#27578)
- Return False if error occurs

(cherry picked from commit d6ed6d53e9)

Co-authored-by: Marica <maricadsouza221197@gmail.com>
2021-09-18 15:25:44 +05:30
Marica
d6ed6d53e9 fix: Handle is_search_module_loaded for redis version < 4.0.0 (#27574)
- Return False if error occurs
2021-09-18 14:23:44 +05:30
Frappe PR Bot
a741fd1cfe fix: PO/PINV - Check if doctype has company_address field before setting the value (#27441) (#27575)
Co-authored-by: Vama Mehta <vama.mehta@inqubit.in>
(cherry picked from commit 666eaae6ce)

Co-authored-by: vama <vamagithub@gmail.com>
2021-09-18 13:24:33 +05:30
vama
666eaae6ce fix: PO/PINV - Check if doctype has company_address field before setting the value (#27441)
Co-authored-by: Vama Mehta <vama.mehta@inqubit.in>
2021-09-18 13:21:45 +05:30
Anoop
9ffb65b5a4 fix(healthcare): Duplicate Contact error on add Patient (#27427)
* fix: duplicate contact error when linking existing Customer to Patient
validation for existing User email and mobile before creating user on Patient update

* test: patient - test contact, user creation

* fix: test_patient_contact clearing contact breaking other tests
sider issues

* fix: use db_set instead of set_value

* fix(test): overlapping appointments

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-09-18 01:02:31 +05:30
Subin Tom
8c01ae952b conflict fixes 2021-09-17 20:18:39 +05:30
Subin Tom
e8cf32e1c8 fixing conflicts 2021-09-17 20:16:10 +05:30
Frappe PR Bot
e6d0a57f0c ci: fix docs checker for empty body (#27569)
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-17 17:20:59 +05:30
Saqib
5451aed115 Merge branch 'version-13-hotfix' into backport-fix-selling-settings 2021-09-17 15:56:01 +05:30
Frappe PR Bot
bd1c823aa6 fix: unecessary keyword args were passed in mapper functions (#27563) (#27564)
(cherry picked from commit e03d9aa889)

Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
2021-09-17 13:21:33 +05:30
Frappe PR Bot
6ed40463a0 fix: unecessary keyword args were passed in mapper functions (#27563) (#27565)
(cherry picked from commit e03d9aa889)

Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
2021-09-17 13:11:54 +05:30
Subin Tom
8dfdab9dc1 fix: Tax breakup based on items, missing GST fields (#27524)
* fix: Tax breakup based on items

* fix: added gst fields,warehouse validation to pos inv,patch

* fix: tax breakup test fix, eway bill hsn fix

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
(cherry picked from commit d49346ac45)

# Conflicts:
#	erpnext/patches.txt
#	erpnext/regional/india/setup.py
2021-09-17 05:21:40 +00:00
Frappe PR Bot
e990bb8816 fix: Remove duplicates from customer_code field (bp #27555)
(cherry picked from commit 41f11eca72)

Co-authored-by: Marica <maricadsouza221197@gmail.com>
2021-09-17 05:15:03 +00:00
Deepesh Garg
e2eb72eb5b fix: Deferred revenue entries post account freezing 2021-09-16 18:54:57 +05:30
Frappe PR Bot
450e1e8ed4 fix: no validation on item defaults (#27549)
* fix: no validation on item defaults (#27393)

* fix: no validation on item defaults

* fix: cache value while validating

* test: item default company relation

* fix: reorder validations

* refactor: add guard conditions on update_defaults

* test: add default warehouse for item group

* fix: validate item defaults for item groups

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
(cherry picked from commit 5eba1ccd51)

# Conflicts:
#	erpnext/setup/doctype/item_group/item_group.py
#	erpnext/stock/doctype/item/item.py

* fix: resolve conflicts

Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-16 12:25:39 +00:00
Saqib
24c08f5092 Merge branch 'version-13-hotfix' into backport-fix-selling-settings 2021-09-16 16:59:54 +05:30
Frappe PR Bot
adc5bf7b9c Merge pull request #27543 from frappe-pr-bot/backport/version-13-hotfix/27538
fix: Validate if item exists on uploading items in stock reco
2021-09-16 16:07:56 +05:30
Frappe PR Bot
e9683fad47 fix(ProdPlan): Get SubAssy Items does not work (bp #27537)
* fix(ProdPlan): Get SubAssy Items does not work

This button wasn't working unless the document was saved already.

* fix: make form dirty when subassy item are fetched

(cherry picked from commit 78fe92542c)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-16 10:22:43 +00:00
Frappe PR Bot
5a34520f3f fix(minor): Employee filter in Unpaid Expense Claims report (#27530) (#27531)
(cherry picked from commit 866763c16a)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-09-16 00:14:00 +05:30
Frappe PR Bot
8b3ef8e96e test: automated test for running all stock reports (#27510) (#27522)
* test: automated test for running all stock reports

These test do not assert correctness, they just check that "execute" function
is working with sane filters.

* test: make report execution test modular

(cherry picked from commit 70c203d19e)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-15 22:23:07 +05:30
Rohit Waghchaure
79d1cf161e Merge branch 'version-13-pre-release' into version-13 2021-09-15 21:11:53 +05:30
Rohit Waghchaure
fb55b57f5c bumped to version 13.11.0 2021-09-15 21:31:52 +05:50
Frappe PR Bot
0fb112107f fix: not able to submit stock entry with 350 items (#27523) (#27526)
(cherry picked from commit e6a1ad8016)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2021-09-15 21:06:44 +05:30
Frappe PR Bot
4c51002cb2 fix: not able to submit stock entry with 350 items (#27523) (#27525)
(cherry picked from commit e6a1ad8016)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2021-09-15 21:06:31 +05:30
rohitwaghchaure
abd3aee5b5 chore: change log for version 13.11.0 (#27527) 2021-09-15 21:06:13 +05:30
Frappe PR Bot
6d2d97bac4 fix(minor): Remove b2c limit check from CDNR Invoices (#27516) (#27519)
* fix(minor): Remove b2c limit check from CDNR Invoices

* fix: Remove unnecessary format

(cherry picked from commit 978028c880)

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-09-15 19:11:28 +05:30
Deepesh Garg
978028c880 fix(minor): Remove b2c limit check from CDNR Invoices (#27516)
* fix(minor): Remove b2c limit check from CDNR Invoices

* fix: Remove unnecessary format
2021-09-15 18:51:06 +05:30
Frappe PR Bot
05663268e6 feat: provision to add scrap item in job card (#27483) (#27518)
(cherry picked from commit c5a77f60ed)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2021-09-15 18:15:38 +05:30
Frappe PR Bot
4bd1bceee2 fix: table data deleted on submitted maintenance schedule (bp #27513)
(cherry picked from commit 5e0b21582a)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2021-09-15 17:45:48 +05:30
Frappe PR Bot
7d733af983 feat: link items to supplier / customer (#27479)
* Merge pull request #27281 from DeeMysterio/party-specific-items

feat: link items to supplier / customer
(cherry picked from commit aa82624f31)

# Conflicts:
#	erpnext/patches.txt

* fix: resolve conflict

Co-authored-by: DeeMysterio <dikshajadhav11.dj@gmail.com>
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-15 17:19:50 +05:30
Frappe PR Bot
a87cc12024 feat: provision to add scrap item in job card (#27483) (#27512)
(cherry picked from commit c5a77f60ed)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2021-09-15 17:17:59 +05:30
Frappe PR Bot
d1a4761955 fix: Maintain same rate in Stock Ledger until stock become positive (#27227) (#27477)
* fix: Maintain same rate in Stock Ledger until stock become positive

* fix: Maintain same rate in Stock Ledger until stock become positive

(cherry picked from commit 10754831c3)

Co-authored-by: Nabin Hait <nabinhait@gmail.com>
2021-09-15 17:08:41 +05:30
Marica
9adb4c8b69 Merge pull request #27509 from frappe-pr-bot/backport/version-13-pre-release/27508
fix: Shopping Cart and Variant Selection
2021-09-15 14:17:53 +05:30
Marica
0572c0ae3e Merge pull request #27508 from marination/shopping-cart-fixes
fix: Shopping Cart and Variant Selection
(cherry picked from commit 9e0fb74ab2)
2021-09-15 08:31:20 +00:00
Marica
9e0fb74ab2 Merge pull request #27508 from marination/shopping-cart-fixes
fix: Shopping Cart and Variant Selection
2021-09-15 14:00:14 +05:30
Frappe PR Bot
604f13c69e fix: Values with same account and different account number in consolidated balance sheet report (#27493) (#27504)
(cherry picked from commit 625626b973)

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-09-15 11:49:19 +05:30
Frappe PR Bot
397fad7eb2 fix: Values with same account and different account number in consolidated balance sheet report (#27493) (#27503)
(cherry picked from commit 625626b973)

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-09-15 11:49:04 +05:30
Frappe PR Bot
5f4a58fb83 fix: Autoname for customer and supplier (#27505)
* fix: Autoname for customer and supplier (#27398)

(cherry picked from commit 759f2b7920)

# Conflicts:
#	erpnext/selling/doctype/selling_settings/selling_settings.json

* fix: Resolve conflicts

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-09-15 11:31:51 +05:30
vama
50fe23308a fix: Tags getting fetched correctly in Get Supplier in RFQ (Request For Quotation) (#27499)
* fix: Tags getting fetched correctly in Get Supplier in RFQ( Request For Quotation ) #26343

* fix: Linting issues

* fix: remove unnecessary caching

[skip ci]

Co-authored-by: Vama Mehta <vama.mehta@inqubit.in>
Co-authored-by: Ankush Menat <ankush@iwebnotes.in>
2021-09-15 11:07:36 +05:30
Frappe PR Bot
247d9bf5c4 fix: Patch for updating tax withholding category dates (#27489) (#27495)
(cherry picked from commit c53b78e712)

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-09-15 10:30:41 +05:30
Frappe PR Bot
2ae48eeac8 fix: Patch for updating tax withholding category dates (#27489) (#27494)
(cherry picked from commit c53b78e712)

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-09-15 10:29:50 +05:30
Frappe PR Bot
9659acb31e fix: calculate operating cost based on BOM Quantity (#27464) (#27500)
* fix: calculate operating cost based on BOM Quantity

* fix: added test cases

(cherry picked from commit 2e2985e4f1)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2021-09-15 01:19:15 +05:30
Frappe PR Bot
e4cbe12a71 fix: calculate operating cost based on BOM Quantity (#27464) (#27501)
* fix: calculate operating cost based on BOM Quantity

* fix: added test cases

(cherry picked from commit 2e2985e4f1)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2021-09-15 01:18:56 +05:30
Marica
a3d64c6cb9 Merge pull request #27490 from frappe-pr-bot/backport/version-13-pre-release/27488
fix: Args missing error on changing Price List currency with cart enabled
2021-09-14 19:12:04 +05:30
Marica
52157cc000 Merge pull request #27488 from marination/validate-cart-settings
fix: Args missing error on changing Price List currency with cart enabled
(cherry picked from commit 2a9fbc609d)
2021-09-14 13:14:20 +00:00
Marica
2a9fbc609d Merge pull request #27488 from marination/validate-cart-settings
fix: Args missing error on changing Price List currency with cart enabled
2021-09-14 18:43:15 +05:30
Ankush Menat
4081ecfcd7 chore: sort imports 2021-09-14 18:35:17 +05:30
Marica
e6771f43a7 Merge pull request #27487 from frappe-pr-bot/backport/version-13-pre-release/27486
fix: Handle Excess/Multiple Item Transfer against Job Card
2021-09-14 18:25:02 +05:30
Marica
cf2d1681d8 Merge pull request #27486 from marination/job-card-excess-transfer-hotfix
fix: Handle Excess/Multiple Item Transfer against Job Card
(cherry picked from commit d76e5dcb93)
2021-09-14 12:31:06 +00:00
Marica
d76e5dcb93 Merge pull request #27486 from marination/job-card-excess-transfer-hotfix
fix: Handle Excess/Multiple Item Transfer against Job Card
2021-09-14 17:57:39 +05:30
Frappe PR Bot
3c3f0adbd9 Merge pull request #27481 from deepeshgarg007/gstin_filter_issue_v13 (#27484)
fix: GSTR-1 Reports not showing any data
(cherry picked from commit d5f4160260)

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-09-14 17:35:02 +05:30
GangaManoj
b26da043c4 fix: Rename section break 2021-09-14 17:07:58 +05:30
Deepesh Garg
d5f4160260 Merge pull request #27481 from deepeshgarg007/gstin_filter_issue_v13
fix: GSTR-1 Reports not showing any data
2021-09-14 16:59:18 +05:30
Deepesh Garg
7112c6b9d3 Merge pull request #27476 from deepeshgarg007/tds_dates_v13
feat: Validity dates in Tax Withholding Rates
2021-09-14 16:14:36 +05:30
Deepesh Garg
e8411e8bc2 fix: Update fiscal year 2021-09-14 15:32:12 +05:30
Deepesh Garg
49fa06f849 Merge pull request #27473 from deepeshgarg007/tds_validity_v13
feat: Validity dates in Tax Withholding Rates
2021-09-14 15:28:52 +05:30
Deepesh Garg
ca2420f921 fix: Update fiscal year 2021-09-14 15:06:35 +05:30
Deepesh Garg
0b07107144 Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into tds_validity_v13 2021-09-14 15:03:30 +05:30
Nabin Hait
10754831c3 fix: Maintain same rate in Stock Ledger until stock become positive (#27227)
* fix: Maintain same rate in Stock Ledger until stock become positive

* fix: Maintain same rate in Stock Ledger until stock become positive
2021-09-14 13:34:36 +05:30
Deepesh Garg
a3db15ccb7 fix: Linting Issues 2021-09-14 12:54:18 +05:30
Deepesh Garg
9fda447dd9 fix: Test Case 2021-09-14 12:54:18 +05:30
Frappe PR Bot
c9e7e72a29 fix(HR): Ignore invalid fields when updating employee details (#27456) (#27474)
(cherry picked from commit 95460d9818)

Co-authored-by: Chillar Anand <chillar@avilpage.com>
2021-09-14 12:48:31 +05:30
Deepesh Garg
0b296e2190 fix: Hardcode fiscal year and posting date 2021-09-14 12:29:00 +05:30
Deepesh Garg
c161daa4be fix: Debug CI 2021-09-14 12:29:00 +05:30
Deepesh Garg
1fa4962723 test: Update test case 2021-09-14 12:28:41 +05:30
Deepesh Garg
9c35e3aa89 fix: Linting and patch fixes 2021-09-14 12:28:41 +05:30
Deepesh Garg
86220e9ed6 fix: Advance TDS test case 2021-09-14 12:28:41 +05:30
Deepesh Garg
b86454e7f4 feat: Validity dates in Tax Withholding Rates 2021-09-14 12:28:36 +05:30
Frappe PR Bot
8fd1aec76c fix: employee advance return through multiple additional salaries (#27470)
* fix: employee advance return through multiple additional salaries (#27438)

* fix: employee advance return through multiple additional salaries

* test: test repay unclaimed amount from salary

* fix: sorting in imports

(cherry picked from commit b98740b44a)

* fix: remove naming rule

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-09-14 12:01:19 +05:30
Deepesh Garg
9708bf3750 fix: Linting Issues 2021-09-14 12:01:02 +05:30
Deepesh Garg
173ae56aec fix: Test Case 2021-09-14 12:01:02 +05:30
Deepesh Garg
f101241907 fix: Hardcode fiscal year and posting date 2021-09-14 12:00:35 +05:30
Deepesh Garg
0bb16b6b59 fix: Debug CI 2021-09-14 12:00:35 +05:30
Deepesh Garg
7d61181f8b test: Update test case 2021-09-14 12:00:09 +05:30
Deepesh Garg
e8edeecc05 fix: Linting and patch fixes 2021-09-14 12:00:09 +05:30
Deepesh Garg
5c9f2bf4a4 fix: Advance TDS test case 2021-09-14 12:00:09 +05:30
Deepesh Garg
dab0fe56f1 feat: Validity dates in Tax Withholding Rates 2021-09-14 12:00:08 +05:30
Frappe PR Bot
3887a67f7e fix: editable price list rate field in sales transactions (#27455) (#27460)
(cherry picked from commit a5baf909b7)

Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
2021-09-13 18:48:32 +05:30
Frappe PR Bot
52a99d8da6 fix: editable price list rate field in sales transactions (#27455) (#27461)
(cherry picked from commit a5baf909b7)

Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
2021-09-13 18:48:05 +05:30
Frappe PR Bot
dc5f7a0c09 fix(Payroll): incorrect component amount calculation if dependent on another payment days based component (#27454)
* fix(Payroll): incorrect component amount calculation if dependent on another payment days based component (#27349)

* fix(Payroll): incorrect component amount calculation if dependent on another payment days based component

* fix: set component amount precision at the end

* fix: consider default amount during taxt calculations

* test: component amount dependent on another payment days based component

* fix: test

(cherry picked from commit bab644a249)

# Conflicts:
#	erpnext/payroll/doctype/salary_slip/test_salary_slip.py

* fix: conflicts in test file

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-09-13 15:14:28 +05:30
Frappe PR Bot
64796d3029 fix(Payroll): incorrect component amount calculation if dependent on another payment days based component (#27453)
* fix(Payroll): incorrect component amount calculation if dependent on another payment days based component (#27349)

* fix(Payroll): incorrect component amount calculation if dependent on another payment days based component

* fix: set component amount precision at the end

* fix: consider default amount during taxt calculations

* test: component amount dependent on another payment days based component

* fix: test

(cherry picked from commit bab644a249)

# Conflicts:
#	erpnext/payroll/doctype/salary_slip/test_salary_slip.py

* fix: conflicts in test file

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-09-13 15:13:43 +05:30
Saqib
72d1cf0537 feat: (get_items_from) filter material request item in purchase order (#27452) 2021-09-13 14:01:39 +05:30
Saqib
bb8d90d741 feat: (get_items_from) filter material request item in purchase order (#24725) 2021-09-13 11:46:00 +05:30
Frappe PR Bot
e39db1abe3 revert: "fix: Salary component account filter (#26605)" (#27446) (#27447)
This reverts commit aaea5edbdb.

(cherry picked from commit 5c1f0c98f8)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-13 10:33:28 +05:30
Ankush Menat
71e4230ab0 chore: whitespace/imports 2021-09-13 10:31:00 +05:30
Ankush Menat
5c1f0c98f8 Revert "fix: Salary component account filter (#26605)" (#27446)
This reverts commit aaea5edbdb.
2021-09-13 10:09:01 +05:30
Frappe PR Bot
00c4e346c7 fix(ux): clean invalid fields from variant setting (#27442)
* fix(ux): clean invalid fields from variant setting (#27412)

(cherry picked from commit 6ef879fca2)

# Conflicts:
#	erpnext/stock/doctype/item_variant_settings/item_variant_settings.js

* fix: resolve conflicts

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-12 16:41:31 +05:30
Frappe PR Bot
74fa6fab4c fix(ux): apply proper filtering in stock reports (#27411) (#27443)
* fix(ux): apply proper filtering in stock reports

Stock Balance: apply company filter to warehouse field
Stock Ageing: apply company filter to warehouse field

* fix: unnecessary parens

Co-authored-by: Alan <2.alan.tom@gmail.com>
(cherry picked from commit d743c41b54)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-12 16:41:17 +05:30
Sagar Vora
dd352df168 Merge pull request #27437 from frappe-pr-bot/backport/version-13-hotfix/27433
fix: Template Error due to use of single quote
2021-09-11 17:59:03 +05:30
Sagar Vora
0ecaf23722 fix: Template Error due to use of single quote (#27433)
(cherry picked from commit dae0a1c1d6)
2021-09-11 12:25:27 +00:00
Devin Slauenwhite
becf471a3a fix: fail migration due to None type during v13_0.update_returned_qty_in_pr_dn (#27430)
* fix: fail migration due to None type

* fix: incorrect key: value pair in filter.

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-11 12:22:49 +00:00
rohitwaghchaure
75e108ab81 Merge pull request #27423 from rohitwaghchaure/merge-hotfix-to-pre-release-v13-11-0
chore: Merge branch 'version-13-hotfix' into 'version-13-pre-release' for v13.11.0
2021-09-10 14:17:12 +05:30
Frappe PR Bot
8337ec9fe0 test: basic tests for controllers/queries (bp #27422)
(cherry picked from commit 62fc544280)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-10 13:09:16 +05:30
Ankush Menat
a33de1bdfe chore: remove snyk from dev-dependencies (#27425) 2021-09-10 13:08:06 +05:30
Rohit Waghchaure
135e3b0f09 fix: sider issues 2021-09-10 13:00:30 +05:30
Rohit Waghchaure
c25bc3403d Merge branch 'version-13-hotfix' into merge-hotfix-to-pre-release-v13-11-0 2021-09-10 12:41:54 +05:30
Frappe PR Bot
3b7e981ccd fix: fetch customers and billing email in PSOA (#27418) 2021-09-09 21:31:16 +05:30
Saqib
3cac39c584 fix: pos payment mode selection issue (#27409) (#27417) 2021-09-09 19:36:01 +05:30
Ankush Menat
a6a564c43d chore: whitespace (#27416) 2021-09-09 19:16:21 +05:30
Frappe PR Bot
0950e246c3 refactor: .doc missing and empty row on new doc (#27408) (#27414)
* refactor: .doc missing and empty row on new doc

* fix: let -> const

(cherry picked from commit acdb10377f)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2021-09-09 19:13:06 +05:30
Marica
ef4b1dba26 Merge pull request #27401 from deepeshgarg007/website_item_patch
fix: Website item patch fixes
2021-09-09 16:57:11 +05:30
Frappe PR Bot
b1eb0c5c75 fix: added Show Remarks checkbox in AR & AP reports (#27374) (#27404)
(cherry picked from commit 3576668638)

Co-authored-by: Anuja Pawar <60467153+Anuja-pawar@users.noreply.github.com>
2021-09-09 14:26:31 +05:30
Deepesh Garg
064ce90e8c Merge pull request #27261 from frappe-pr-bot/backport/version-13-hotfix/27143
feat: Taxjar Integration update
2021-09-09 13:16:01 +05:30
Frappe PR Bot
5126b3f93e fix: job card overlap unknown column jc.employee (#27403) (#27405)
* fix: incorrect query for job card overlap

* test: employee overlap in job cards

* test: simplify/refactor job card tests

(cherry picked from commit 678335f8ac)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-09 12:45:25 +05:30
Frappe PR Bot
81dbf1ed00 fix: added delivery date filters to get sales orders in production plan (#27367) (#27397)
(cherry picked from commit 295020451f)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2021-09-09 12:20:49 +05:30
Deepesh Garg
70c5533646 fix: Website item patch fixes 2021-09-09 09:47:18 +05:30
Frappe PR Bot
fea6291399 fix: document naming rule not working for subscription invoices (#27395) 2021-09-08 19:11:47 +05:30
Subin Tom
47c548a070 Merge branch 'version-13-hotfix' into backport/version-13-hotfix/27143 2021-09-08 17:20:20 +05:30
Frappe PR Bot
2d3c036070 fix: auto complete sales order rows in production plan (#27352) (#27396)
* fix: auto complete sales order rows in production plan

* fix: sider

(cherry picked from commit 81d3524d27)

Co-authored-by: Alan <2.alan.tom@gmail.com>
2021-09-08 16:52:43 +05:30
Frappe PR Bot
30e02f092d fix: General Ledger translation issues (#27298) (#27392)
* fix: remove translations from GL report options

Options need not be translated, their display label gets translated
client side.

* fix: make group by options translatable

* ci: semgrep rule for translated options in report

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>

(cherry picked from commit fa819f2fb0)
2021-09-08 16:41:41 +05:30
Frappe PR Bot
67174ef1b3 fix: scan barcode fields input length (#27390)
* fix: scan barcode fields input length (#27389)

* fix: undo unintentional changes

* fix: scan barcode fields input length

* fix: undo barcode field length change

Co-authored-by: Saqib <nextchamp.saqib@gmail.com>

(cherry picked from commit df3e4ce1c0)
2021-09-08 16:22:35 +05:30
Ganga Manoj
7dce900ff5 Merge branch 'version-13-hotfix' into backport-fix-selling-settings 2021-09-07 20:51:47 +05:30
Saqib
d7e7a5519a fix(SLA): select options for 'Pause SLA On' (#27376) 2021-09-07 18:45:26 +05:30
GangaManoj
d623eac084 fix: Move related fields to the same section 2021-09-07 17:32:01 +05:30
GangaManoj
c128618185 fix: Rename 'Action if Same Rate is Not Maintained' to 'Action if Same Rate is Not Maintained Throughout Sales Cycle' 2021-09-07 17:05:20 +05:30
GangaManoj
d67460bf22 fix: Only display 'Role Allowed to Override Stop Action' if 'Maintain Same Rate Throughout Sales Cycle' is checked 2021-09-07 17:04:29 +05:30
GangaManoj
7f1d611b47 fix: Remove redundant description 2021-09-07 17:04:04 +05:30
Marica
4727bf5806 Merge pull request #27381 from frappe-pr-bot/backport/version-13-hotfix/27358
fix: Check if Item is serialised before trying to fetch SN and set SO in it
2021-09-07 15:11:53 +05:30
Marica
29e0d315db Merge branch 'version-13-hotfix' into backport/version-13-hotfix/27358 2021-09-07 15:01:13 +05:30
Frappe PR Bot
5e97d1b620 ci: fix docs checker for wiki based docs (#27380) (#27382)
(cherry picked from commit 5596988c94)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-07 14:57:37 +05:30
Marica
255155c5b8 fix: Check if Item is serialised before trying to fetch SN and set SO in it (#27358)
(cherry picked from commit 61a1356109)
2021-09-07 09:13:34 +00:00
Rohit Waghchaure
210fc4481a Merge branch 'version-13-pre-release' into version-13 2021-09-07 13:05:13 +05:30
Rohit Waghchaure
4f3e2240b8 bumped to version 13.10.2 2021-09-07 13:25:13 +05:50
Frappe PR Bot
ede188d138 fix: missed to add voucher_type, voucher_no to get GL Entries (#27377)
* fix: missed to add voucher_type, voucher_no to get GL Entries (#27368)

* fix: missed to add voucher_type, voucher_no to get gl entries

* test: get voucherwise details utilities

# Conflicts:
#	erpnext/accounts/test/test_utils.py

* fix: resolve conflicts

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>

(cherry picked from commit 058d98342a)
2021-09-07 13:00:40 +05:30
Frappe PR Bot
454630f2bd fix: missed to add voucher_type, voucher_no to get GL Entries (#27368) (#27378)
* fix: missed to add voucher_type, voucher_no to get gl entries

* test: get voucherwise details utilities


Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>

(cherry picked from commit 058d98342a)
2021-09-07 13:00:18 +05:30
Saqib
40fa4cf77c fix: 'NoneType' has no attribute 'name' (#27375) 2021-09-07 12:13:22 +05:30
Ganga Manoj
e8eb137cd4 fix: update Selling Settings (#27364) 2021-09-07 11:42:26 +05:30
Frappe PR Bot
821d55b0e0 fix: employee remider settings (#27365) (#27366)
(cherry picked from commit 88c9fe35bd)

Co-authored-by: Anupam Kumar <anupamvns0099@gmail.com>
2021-09-07 00:20:38 +05:30
Rohit Waghchaure
f28cb55d0f Merge branch 'version-13-pre-release' into version-13 2021-09-06 23:33:19 +05:30
Rohit Waghchaure
adb07ebe09 bumped to version 13.10.1 2021-09-06 23:53:19 +05:50
Frappe PR Bot
2565b1fb33 fix: patch failure for vat audit report (#27355) (#27356)
(cherry picked from commit 14b01619de)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-06 13:51:27 +05:30
Frappe PR Bot
1708e8b7ce fix: patch failure for vat audit report (#27355) (#27357)
(cherry picked from commit 14b01619de)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-06 13:51:18 +05:30
Frappe PR Bot
61e71d45fa fix: Dont fetch Stopped/Cancelled MRs in Stock Entry Get Items dialog (#27326) (#27354)
(cherry picked from commit 0f2a52078c)

Co-authored-by: Marica <maricadsouza221197@gmail.com>
2021-09-06 13:34:50 +05:30
Chillar Anand
05e06e8455 fix(healthcare): Added item price to default price list (#27353)
Co-authored-by: Dany Robert <rtdany10@gmail.com>
2021-09-06 13:27:28 +05:30
Deepesh Garg
6bab2b0f86 Merge pull request #27344 from frappe-pr-bot/backport/version-13-hotfix/27316
fix: Presentation currency conversion in reports
2021-09-06 10:28:23 +05:30
Deepesh Garg
1ff2562f98 fix: Presentation currency conversion in reports (#27316)
(cherry picked from commit ceaa804f04)
2021-09-05 11:52:39 +00:00
Frappe PR Bot
e9da4ed34d fix: manually added weight per unit reset to zero after save (#27330) (#27338)
(cherry picked from commit 7b4a65484a)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2021-09-03 22:54:49 +05:30
Marica
aee2e04a45 Merge pull request #27332 from marination/paging-discount-fix
fix: Paging and Discount filter
2021-09-03 19:11:58 +05:30
Ankush Menat
d3330cec87 chore: ignore import cleanup commit in blame 2021-09-03 19:00:47 +05:30
Chillar Anand
4b2be2999f chore: Cleanup imports (#27320)
* chore: Added isort to pre-commit config

* chore: Sort imports with isort

* chore: Remove imports with pycln

* chore: Sort imports with isort

* chore: Fix import issues

* chore: Fix sider issues

* chore: linting

* chore: linting / sorting import

from ecommerce refactor merge

* ci: dont allow unused imports

* chore: sort / clean ecommerce imports

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-03 18:57:43 +05:30
marination
477870eb78 test: Product Discounts 2021-09-03 18:51:56 +05:30
marination
a32bb25407 fix: Linter (whitespace) 2021-09-03 18:04:53 +05:30
marination
99ec4cc7fe fix: Paging and Discount filter
- Convert incoming api args to frappe dict
- Change discount filter condition due to reversal of behaviour
2021-09-03 17:50:14 +05:30
Frappe PR Bot
910b9bc3f4 fix: braintree payment processed twice (#27327) 2021-09-03 14:45:12 +05:30
Suraj Shetty
513822488e Merge pull request #24603 from marination/e-commerce-refactor 2021-09-03 14:07:52 +05:30
Deepesh Garg
1a17f0f844 Merge pull request #26129 from deepeshgarg007/gstr_1_cdnr_unregistered_json
feat: CDNR Unreg json generation
2021-09-03 13:53:35 +05:30
Marica
853f479f58 Merge branch 'version-13-hotfix' into e-commerce-refactor 2021-09-03 13:47:30 +05:30
marination
9d05b2ebfb test: Set Price list and company in data engine test setup 2021-09-03 13:46:28 +05:30
Deepesh Garg
6a9dcf2558 fix: Patch error and tests 2021-09-03 12:40:13 +05:30
Frappe PR Bot
96aee284d2 fix: south africa vat patch failure (#27324)
* fix: south africa vat patch failure (#27323)

reload doc is necessary on new doctypes

(cherry picked from commit d1fe060e4a)

# Conflicts:
#	erpnext/patches/v13_0/add_custom_field_for_south_africa.py

* fix: resolve conflicts

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-03 12:29:27 +05:30
Saqib
0cc301a82b Merge pull request #27319 from GangaManoj/backport-product-bundle-handling
feat: Improve Product Bundle handling
2021-09-03 12:28:51 +05:30
Frappe PR Bot
0228db1e61 fix: south africa vat patch failure (#27325)
* fix: south africa vat patch failure (#27323)

reload doc is necessary on new doctypes

(cherry picked from commit d1fe060e4a)

# Conflicts:
#	erpnext/patches/v13_0/add_custom_field_for_south_africa.py

* fix: resolve conflicts

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-03 12:26:41 +05:30
Deepesh Garg
37e7b3e3ac fix: Patch 2021-09-03 11:18:24 +05:30
Saqib
115fb944c2 fix: undo unintentional changes 2021-09-03 11:06:20 +05:30
Deepesh Garg
20c7237de6 fix: Patch and linting errors 2021-09-02 22:01:24 +05:30
GangaManoj
debffbfb2d fix: Trim trailing whitespaces 2021-09-02 20:53:53 +05:30
GangaManoj
17bf32d8dc fix: Add Product Bundle field in Items table 2021-09-02 20:04:51 +05:30
GangaManoj
758a23eff7 fix: Remove Rate from field_no_map 2021-09-02 20:04:25 +05:30
GangaManoj
b5ef69dd34 fix: Set Product Bundle's Delivery Dates in SO as Bundle Items' Delivery Dates in PO 2021-09-02 20:04:25 +05:30
GangaManoj
4538071e0d fix: Remove Add Row and Delete Row options for Packed Items table 2021-09-02 20:04:25 +05:30
GangaManoj
361605a2b6 fix: Uncheck read-only for Packed Items table 2021-09-02 20:04:25 +05:30
GangaManoj
c757198d8b fix: Make Rate read-only by default 2021-09-02 20:04:25 +05:30
GangaManoj
39ff46afa8 fix: Test Product Bundle price calculation 2021-09-02 20:04:25 +05:30
GangaManoj
9e399ecc87 fix: Test if Product Bundles are mapped properly on creating a Sales Order 2021-09-02 20:04:24 +05:30
GangaManoj
d0b4aa7504 fix: Map Packed Items to Items table of PO 2021-09-02 20:03:52 +05:30
GangaManoj
890705221e fix: Replace Product Bundles in the Items table with their child items 2021-09-02 20:03:52 +05:30
GangaManoj
3c0883d69b fix: Add Product Bundle field in Items table 2021-09-02 20:03:52 +05:30
GangaManoj
4ca150f4ca fix: Remove Bundle Items table 2021-09-02 20:03:52 +05:30
GangaManoj
18680990bf fix: Display Packed/Bundle Items table only if it exists 2021-09-02 20:03:50 +05:30
GangaManoj
f2c4c1dc0e fix: Enable Print Hide for Bundle Items 2021-09-02 20:03:27 +05:30
GangaManoj
fd8482757e fix: Move Packed Items table right below the Items table 2021-09-02 20:02:36 +05:30
GangaManoj
34546d02be fix: Disable Add Row and Delete Row for Bundle Items 2021-09-02 20:02:36 +05:30
GangaManoj
6bfd5daba0 fix: Create separate section for Bundle Items 2021-09-02 20:02:35 +05:30
GangaManoj
2d9138ab64 feat: Populate Bundle Items table 2021-09-02 20:02:35 +05:30
GangaManoj
f10fdb4eeb feat: Add Bundle Items table 2021-09-02 20:02:35 +05:30
GangaManoj
ba73df161d fix: Make Sales Order field editable so the PO can be linked with an SO later 2021-09-02 20:02:35 +05:30
GangaManoj
bb7ad885da fix: Hide Rate of Bundle Items while printing 2021-09-02 20:02:35 +05:30
GangaManoj
288d0191ab fix: Make Rate column read only by default 2021-09-02 20:02:35 +05:30
GangaManoj
b9a33eca97 fix: Display Bundle Items right below the Items table 2021-09-02 20:02:35 +05:30
GangaManoj
1ecec7154b fix: Enable Fetch If Empty for Rate 2021-09-02 20:02:35 +05:30
GangaManoj
2b56e62805 fix: Calculate Product Bundle price based on the prices of its child items 2021-09-02 20:02:35 +05:30
GangaManoj
084b27bb34 fix: Return if there are no Items 2021-09-02 20:02:35 +05:30
GangaManoj
9039effd69 fix: Get Bundle Items 2021-09-02 20:02:33 +05:30
GangaManoj
3e177ede13 fix: Remove comments 2021-09-02 20:01:06 +05:30
GangaManoj
fd8657d2f7 fix: Get data when grouped by invoice and otherwise 2021-09-02 20:00:49 +05:30
GangaManoj
498377fbbc fix: Display only the Invoice rows in bold 2021-09-02 19:59:44 +05:30
GangaManoj
7ef5952176 fix: Remove base_rate and buying_rate for Invoice rows 2021-09-02 19:58:47 +05:30
GangaManoj
8478a83148 fix: Only update Product Bundle prices if 'Calculate Product Bundle Price based on Child Items' Rates' is enabled 2021-09-02 19:58:47 +05:30
GangaManoj
fc9557bbb6 fix: Calculate total buying_amount for each invoice 2021-09-02 19:58:47 +05:30
GangaManoj
b14a87eb2b fix: Fetch bundle item details 2021-09-02 19:58:44 +05:30
GangaManoj
e52b0612fc fix: Fetch base_net_total for each Invoice 2021-09-02 19:58:17 +05:30
GangaManoj
ae40c2ad34 fix: Remove qty from Sales Invoice rows 2021-09-02 19:58:15 +05:30
GangaManoj
d730f0e092 fix: Make Rate editable if editable_bundle_item_rates is checked 2021-09-02 19:56:55 +05:30
GangaManoj
39a3ffcb56 fix: Make fieldname more concise 2021-09-02 19:56:53 +05:30
GangaManoj
80b3a032fb fix: Add checkbox to enable calculation of Product Bundle price based on child Items' rates 2021-09-02 19:52:18 +05:30
GangaManoj
58ef1e30a5 fix: Update Product Bundle rate based on its updated amount 2021-09-02 19:51:16 +05:30
GangaManoj
c37dc7ca33 fix: Update Product Bundle price based on the rates of its child Items 2021-09-02 19:51:16 +05:30
GangaManoj
0967d226ed fix: Add editable Rate column 2021-09-02 19:51:16 +05:30
GangaManoj
272ca96d2c fix: Populate Bundle Items table 2021-09-02 19:51:16 +05:30
GangaManoj
3b23341d35 fix: Add Bundle Items table 2021-09-02 19:51:16 +05:30
GangaManoj
316b65face fix: Calculate total buying_amount and gross profit for each invoice 2021-09-02 19:51:16 +05:30
GangaManoj
0fa13fb3f1 fix: Remove Item Code and Item Name columns 2021-09-02 19:51:15 +05:30
GangaManoj
55781171cc fix: Display Items in the format Item Code: Item Name 2021-09-02 19:51:14 +05:30
GangaManoj
6ab58c7faf fix: Add items belonging to Product Bundles as children 2021-09-02 19:50:20 +05:30
GangaManoj
cacecbbaa5 fix: Set initial_depth to 3 2021-09-02 19:50:19 +05:30
GangaManoj
d2d9f7e758 fix: Assign indent and parent_invoice 2021-09-02 19:50:19 +05:30
GangaManoj
416d1ceb6f fix: Make Invoice row bold 2021-09-02 19:50:19 +05:30
GangaManoj
fdfae33ff4 fix: Display items as descendants of invoices 2021-09-02 19:50:19 +05:30
GangaManoj
1f147e5b9e fix: Display data in tree form 2021-09-02 19:50:19 +05:30
GangaManoj
7a7665d1d0 fix: Return data as dict if the report is grouped by Invoice 2021-09-02 19:50:16 +05:30
Deepesh Garg
20f1b74024 Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into gstr_1_cdnr_unregistered_json 2021-09-02 19:09:48 +05:30
Deepesh Garg
f9a1b6682c fix: Linting issues 2021-09-02 19:08:48 +05:30
Frappe PR Bot
0fd037eb6a fix: minor linting issues (#27314) (#27315)
* fix: syntax error in gratuity

* fix: unpacking None into three variables

* fix: unexpected kwarg for delete_accounting_dimensions

(cherry picked from commit eec40513be)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-09-02 18:28:41 +05:30
marination
10a450cb2c fix: Failing search util import and patch
- Use simple function import instead of global variable to check if field is valid to index
- Commit after every 20 items in patch to  create web items from items
2021-09-02 14:30:37 +05:30
marination
c5efb6dc35 feat: (minor) Backorder indicator and fixed inconsistencies
- Checkbox in website item to indicate if item is on backorder
- Indicator on listing on full page if availbale on backorder.
- fix: Allow provision to add any valid field from Website Item in Search Index
- fix: Settings filter fields are as per Item, make as per Website Item
- "Add to quote/ Go to Quote" if cart checkout is disabled
2021-09-02 14:07:59 +05:30
Suraj Shetty
258efd5949 Merge pull request #27311 from surajshetty3416/fix-remove-all-import-version-13-hotfix 2021-09-02 13:22:14 +05:30
Suraj Shetty
6751290988 fix: Use remove_all from file_manager 2021-09-02 13:20:34 +05:30
Marica
7c09a79dd4 Merge branch 'version-13-hotfix' into e-commerce-refactor 2021-09-02 10:25:14 +05:30
Devin Slauenwhite
e10fede1ae fix: track salary slip ytd gross salary. (#27215)
* fix: track salary slip ytd gross salary.

* fix: ytd gross salary unique label

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
Co-authored-by: Jannat Patel <31363128+pateljannat@users.noreply.github.com>
2021-09-02 09:40:28 +05:30
Anupam Kumar
6d7ecb9290 Merge pull request #27291 from anupamvs/comany-name-field-issue
fix: mapping for company name lead->contact
2021-09-02 09:33:00 +05:30
Frappe PR Bot
cf4ff46c1e fix: Org Chart fixes (#27290) (#27305)
* fix(org chart): multiple root nodes not expanding on clicking Expand All

* fix: unstable filter inserts duplicate nodes

(cherry picked from commit f828d853e3)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-09-01 23:53:23 +05:30
Rohit Waghchaure
6440e4f970 Merge branch 'version-13-pre-release' into version-13 2021-09-01 22:33:12 +05:30
Rohit Waghchaure
702eea3b54 bumped to version 13.10.0 2021-09-01 22:53:11 +05:50
rohitwaghchaure
e362e23941 Merge pull request #27303 from rohitwaghchaure/chnage-log-for-v13-10-0
chore: change log for v13.10.0
2021-09-01 22:27:45 +05:30
Rohit Waghchaure
68482b223f chore: change log for v13.10.0 2021-09-01 22:26:41 +05:30
Ankush Menat
9d0b5f1a0d Merge pull request #27299 from ankush/strict_linting_v13
chore: cleanup linting errors and introduce strict linting checks
2021-09-01 21:16:47 +05:30
Ankush Menat
5a9750c144 Merge pull request #27296 from frappe-pr-bot/backport/version-13-hotfix/27278
fix: production plan UX and validation message
2021-09-01 20:38:16 +05:30
Ankush Menat
4069f6c9ac fix: remove duplicate code 2021-09-01 20:27:30 +05:30
Ankush Menat
4fe475b93d chore: ignore whitespace changes in blame 2021-09-01 20:24:30 +05:30
Ankush Menat
f0bcb753fb chore: whitespace trimming 2021-09-01 20:23:48 +05:30
Ankush Menat
77aef302e4 ci: add strict config for flake8 2021-09-01 20:22:00 +05:30
Ankush Menat
b92310eb35 ci: add pre-commit config 2021-09-01 20:21:52 +05:30
Ankush Menat
9ad5de2e57 fix: remove unused format from query
doctype is not used in query and parent alone is enough to identify
packed items.
2021-09-01 20:21:21 +05:30
Ankush Menat
187c3f9630 fix: invalid escape sequences in regex 2021-09-01 20:20:32 +05:30
Ankush Menat
1c63cbb1e4 fix: remove duplicate imports 2021-09-01 20:18:45 +05:30
Ankush Menat
0519b59aa9 fix: undefined variables 2021-09-01 20:16:38 +05:30
Ankush Menat
81391ed54f refactor: itemgetter instead of assigned lambda 2021-09-01 20:16:31 +05:30
Ankush Menat
8746466412 chore: correct indentation 2021-09-01 20:16:24 +05:30
Ankush Menat
76f1ed624a fix: remove bare excepts 2021-09-01 20:15:54 +05:30
rohitwaghchaure
71e1615925 fix: production plan UX and validation message (#27278)
(cherry picked from commit 2a8cd05b44)
2021-09-01 13:49:52 +00:00
Marica
331ec13012 Merge pull request #27294 from frappe-pr-bot/backport/version-13-hotfix/27293
fix: Zero division error while fetching unconsumed materials
2021-09-01 19:11:26 +05:30
Marica
d382c3c101 fix: Zero division error while fetching unconsumed materials (#27293)
`

(cherry picked from commit 9506c14d35)
2021-09-01 13:20:16 +00:00
Ganga Manoj
c4bda6374b fix: calculate first_response_time based on working hours (#26520) 2021-09-01 18:25:36 +05:30
Anupam
5518900af9 fix: mapping for company name lead->contact 2021-09-01 17:45:46 +05:30
Anuja Pawar
d81e837667 refactor: payment reconciliation tool (#27284) 2021-09-01 15:20:37 +05:30
marination
7ab858a9b0 Chore: Miscellaneous UI review changes
- Added bg (variable) to pages, card space separation visible
- Removed `show brand line` in settings, shown by default
- Re-arranged settings by importance
- View toggling primary colour is grey
- Only populate recent searches on successful search
- Hit only one server side api, once while searching
- List view primary button float right
- Discounts takes upper limit eg. 10% and below
- Navbar icons only wiggle on qty increase in cart/wishlist
- Pay button in SO portal
- Remove bottom white space below item full page image, min-height fits to content
- List view vertical space between heading and item code
- Empty offer subtitle handled
2021-09-01 14:57:50 +05:30
Frappe PR Bot
1f1841d232 ci(semgrep): add translation checks for report labels (#27280) (#27286)
* ci(semgrep): add translation checks for report labels

* refactor: shift report tests to it's own yml

path can't be applied on a test id basis

* ci: ignore regional report in translation checks

[skip ci]

(cherry picked from commit 72ece75b11)

Co-authored-by: Alan <2.alan.tom@gmail.com>
2021-09-01 14:27:00 +05:30
Frappe PR Bot
883e1394ba fix: translate labels (#27282) (#27283)
[skip ci]

(cherry picked from commit 9dc0843cbd)

Co-authored-by: Alan <2.alan.tom@gmail.com>
2021-09-01 13:00:48 +05:30
Deepesh Garg
22dc317f20 Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into gstr_1_cdnr_unregistered_json 2021-09-01 10:23:25 +05:30
Subin Tom
95208ab274 Conflict fixes 2021-09-01 10:08:30 +05:30
Frappe PR Bot
0f00bcda34 fix: Healthcare Service Unit fixes (#27273) (#27275)
* fix: validate service unit setup against practitioner schedule

* fix: service unit properties getting overwritten

(cherry picked from commit ef76f62bc1)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-08-31 21:18:34 +05:30
Frappe PR Bot
c31bf155f0 fix: Healthcare Service Unit fixes (#27273) (#27274)
* fix: validate service unit setup against practitioner schedule

* fix: service unit properties getting overwritten

(cherry picked from commit ef76f62bc1)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-08-31 21:18:22 +05:30
Frappe PR Bot
1063d85569 fix: Correct company address not getting copied from Purchase Order to Invoice (#27217) (#27235)
* fix: Correct company adderess not getting copied from Purchase Order to Invoice

* fix: Linting issues

(cherry picked from commit fd467e6d32)

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-08-31 20:11:21 +05:30
Frappe PR Bot
1b338d678a fix: revert "refactor: simplify initialize_previous_data" (#27270) (#27272)
This reverts commit 2f5624e588.

(cherry picked from commit c1d986a0c6)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-08-31 19:46:25 +05:30
Frappe PR Bot
d641dd68d4 fix: revert "refactor: simplify initialize_previous_data" (#27270) (#27271)
This reverts commit 2f5624e588.

(cherry picked from commit c1d986a0c6)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-08-31 19:46:13 +05:30
Subin Tom
634abb783f resolving conflicts 2021-08-31 19:27:48 +05:30
Frappe PR Bot
155df936cd Revert "fix: add child item groups into the filters (#26997)" (#27266) (#27268)
This reverts commit c60d5523bc.

(cherry picked from commit 763450dcf8)

Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-08-31 19:13:04 +05:30
Frappe PR Bot
d5d193b015 Revert "fix: add child item groups into the filters (#26997)" (#27266) (#27269)
This reverts commit c60d5523bc.

(cherry picked from commit 763450dcf8)

Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-08-31 19:12:24 +05:30
Frappe PR Bot
891bccf2c1 fix(minor): Incorrect unallocated amount on type receive (#27262) (#27264)
(cherry picked from commit c37cec9b9d)

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-08-31 18:53:49 +05:30
Frappe PR Bot
0c4f29edcf fix(minor): Incorrect unallocated amount on type receive (#27262) (#27263)
(cherry picked from commit c37cec9b9d)

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-08-31 18:53:30 +05:30
Subin Tom
ead1397a75 feat: Taxjar Integration update (#27143)
* feat: Taxjar Integration update

* added taxable_amount,taxable_amount fields in setup.py

* Update taxjar_integration.py

Sider issues fix

* Sider issues fix

* Sider issues fix

* sider issue fix: unused import

* sider issue fix

* Update erpnext/erpnext_integrations/taxjar_integration.py

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>

* Removed permission for 'All'

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
(cherry picked from commit 7004944cc0)

# Conflicts:
#	erpnext/patches.txt
2021-08-31 13:04:37 +00:00
Sun Howwrongbum
63cf012c24 fix: pos payment methods not setting rounded_total (#27251) 2021-08-31 18:26:20 +05:30
skjbulcher
a1e5a64a66 fix: payment terms on Sales Order when Invoice Portion field is empty 2021-08-31 18:24:12 +05:30
Frappe PR Bot
2dc2dac56a fix: email digest original_user issue (#27191) (#27256)
(cherry picked from commit 48f2e5ac1d)

Co-authored-by: Jannat Patel <31363128+pateljannat@users.noreply.github.com>
2021-08-31 18:08:33 +05:30
Raffael Meyer
366eb86fdf feat: color and leave type in leave application calendar (#27246)
* feat: color and leave type in leave application calendar

* fix: sider + use cstring
2021-08-31 17:00:44 +05:30
Alan
c1354047a3 fix: pass labels through translation function (#27254) 2021-08-31 15:16:50 +05:30
Frappe PR Bot
45059571f0 fix(payroll): Fixed issue with accessing last salary slip for new employee (#27247) (#27253)
(cherry picked from commit 88d849320f)

Co-authored-by: Chillar Anand <anand21nanda@gmail.com>
2021-08-31 14:46:37 +05:30
Frappe PR Bot
a3c12939ed fix(test): first check for org chart always fails (#27250)
* fix(test): first check for org chart always fails (#27249)

(cherry picked from commit 52dd326f22)

# Conflicts:
#	cypress/integration/test_organizational_chart_desktop.js

* fix: conflict

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-08-31 14:13:23 +05:30
Frappe PR Bot
fb8c917b97 fix: LTV ratio comparison (#27207) (#27212)
(cherry picked from commit f5cdbf161d)

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-08-31 11:46:12 +05:30
Frappe PR Bot
f20913fb69 fix: Correct company address not getting copied from Purchase Order to Invoice (#27217) (#27234)
* fix: Correct company adderess not getting copied from Purchase Order to Invoice

* fix: Linting issues

(cherry picked from commit fd467e6d32)

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-08-31 11:08:58 +05:30
marination
fd44b6b340 Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into e-commerce-refactor 2021-08-30 22:30:02 +05:30
Frappe PR Bot
bafc9ddde4 fix: patches were breaking during migration (#27213) (#27241)
* fix: patches were breaking during migration (#27200)

* fix: patches were breaking during migrating

* fix: patches were breaking during migration

(cherry picked from commit 7433757489)

# Conflicts:
#	erpnext/patches.txt

* fix: resolve conflicts

Co-authored-by: Shadrak Gurupnor <30501401+shadrak98@users.noreply.github.com>
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
(cherry picked from commit aa04051416)
2021-08-30 19:04:58 +05:30
Frappe PR Bot
aa04051416 fix: patches were breaking during migration (#27213)
* fix: patches were breaking during migration (#27200)

* fix: patches were breaking during migrating

* fix: patches were breaking during migration

(cherry picked from commit 7433757489)

# Conflicts:
#	erpnext/patches.txt

* fix: resolve conflicts

Co-authored-by: Shadrak Gurupnor <30501401+shadrak98@users.noreply.github.com>
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-08-30 18:51:10 +05:30
Frappe PR Bot
d9b9888ad5 feat: (consistency) Add Primary Address and Contact section in Supplier (#27232) (#27233)
* feat: (consistency) Add Primary Address and Contact section in Supplier

- The same is present in customer and is inconsistent with supplier
- Helps quickly create primary address and contact via quick entry

* fix: Popup stale build and data consistency

- Include `supplier_quick_entry.js` in erpnext.bundle.js
- Create primary supplier address on update
- Set newly created address (quick entry)  in Supplier and Customer
- Clear address set in supplier and customer on delete (dependency)

* fix: Indentation and removed f-strings

- Sider: fixed indentation in js
- Dont use f-strings in queries

(cherry picked from commit 3d87d9f1d3)

Co-authored-by: Marica <maricadsouza221197@gmail.com>
2021-08-30 18:49:40 +05:30
Frappe PR Bot
076e8e9da0 fix: Stock Ageing report issues for serialized items (#27228) (#27239)
* fix: incorrect calculation in get_range_age

* fix: remove serial numbers not in stock from fifo_queue

* refactor: make serial_no condition explicit

* refactor: reduce code duplication


Co-authored-by: Dany Robert <rtdany10@gmail.com>
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>

(cherry picked from commit 5fd04101d4)
2021-08-30 18:35:52 +05:30
Frappe PR Bot
03dcecff67 ci: use node action instead of apt (#27226) (#27237)
* ci: use node action instead of apt (#27220)

(cherry picked from commit e5e00700e5)

* ci: keep python version 3.6 for v13

* ci: use node v12

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
(cherry picked from commit dc948cab3e)
2021-08-30 18:07:05 +05:30
Frappe PR Bot
a0cf396712 fix: expense claim reimbursed amount update (#27204) (#27229)
(cherry picked from commit 9cb642238f)

Co-authored-by: Subin Tom <36098155+nemesis189@users.noreply.github.com>
2021-08-30 17:54:57 +05:30
Marica
3d87d9f1d3 feat: (consistency) Add Primary Address and Contact section in Supplier (#27232)
* feat: (consistency) Add Primary Address and Contact section in Supplier

- The same is present in customer and is inconsistent with supplier
- Helps quickly create primary address and contact via quick entry

* fix: Popup stale build and data consistency

- Include `supplier_quick_entry.js` in erpnext.bundle.js
- Create primary supplier address on update
- Set newly created address (quick entry)  in Supplier and Customer
- Clear address set in supplier and customer on delete (dependency)

* fix: Indentation and removed f-strings

- Sider: fixed indentation in js
- Dont use f-strings in queries
2021-08-30 16:56:31 +05:30
Frappe PR Bot
b2d3b8a5ff fix: replace cur_frm with frm (bp #27210)
(cherry picked from commit 327071cb90)

Co-authored-by: François de Ryckel <f.deryckel@gmail.com>
2021-08-30 15:46:28 +05:30
Frappe PR Bot
dc948cab3e ci: use node action instead of apt (#27226)
* ci: use node action instead of apt (#27220)

(cherry picked from commit e5e00700e5)

* ci: keep python version 3.6 for v13

* ci: use node v12

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-08-30 12:32:43 +05:30
Saqib
f71ff830ef fix: remove non-existent method call in hooks (#27224) 2021-08-30 11:49:43 +05:30
Saqib
085585cbe2 fix: remove non-existent method call in hooks (#27223) 2021-08-30 11:44:26 +05:30
Frappe PR Bot
ee76032fca fix: patches were breaking while migrating (#27206)
* fix: patches were breaking while migrating (#27195)

* fix: patches were breaking while migrating

* fix: Removed duplicate function

Co-authored-by: Nabin Hait <nabinhait@gmail.com>
(cherry picked from commit 17e0fa7a8b)

# Conflicts:
#	erpnext/patches.txt

* fix: resolve conflicts

Co-authored-by: Shadrak Gurupnor <30501401+shadrak98@users.noreply.github.com>
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-08-28 14:54:14 +05:30
Frappe PR Bot
d88346c6cd fix: patches were breaking while migrating (#27205)
* fix: patches were breaking while migrating (#27195)

* fix: patches were breaking while migrating

* fix: Removed duplicate function

Co-authored-by: Nabin Hait <nabinhait@gmail.com>
(cherry picked from commit 17e0fa7a8b)

# Conflicts:
#	erpnext/patches.txt

* fix: resolve conflicts

Co-authored-by: Shadrak Gurupnor <30501401+shadrak98@users.noreply.github.com>
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-08-28 14:53:59 +05:30
Frappe PR Bot
1e97f87c5b feat(healthcare): Added Treatment Plan Template feature (#27185)
* feat(healthcare): Added Treatment Plan Template feature (#26557)

* feat: Added doctypes for treatment plan template

* feat: Added child doctype

* feat: Added validations for patient age

* chore: Clean up treatment plan template

* fix: Limit plan items to templates

* Added multiselectdialogbox for treatment plan template

* Add template name as autoname

* Clean up code

* Cleanup lint issues

* Clean up code

* Added tests for tpt filters

* Added test records

* Fix order of fields

* Added tests for care plan template

* Added age property for patient

* Clean up code

* Clean up list view

* Clean up code

* Fix lint issues

* Clean up test records

* Code cleanup

no-docs

* chore: Code cleanup

* chore: Use ORM instead of raw sql

* fix: Make treatment plan item fields mandatory

* fix: Added healthcare roles in permissions rules

* fix: Added filters for symptoms, diagnosis

* fix: Show applicable treatment plans button only if patient is present

* fix: Fix key error issues

* fix: Fix issues with filters in plan templates

* chore: Fix age filters

* refactor: appending treatment plan items

* fix: treatment plan test

Co-authored-by: Jannat Patel <31363128+pateljannat@users.noreply.github.com>
Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
(cherry picked from commit f1b77360ee)

# Conflicts:
#	erpnext/healthcare/doctype/patient/patient.py

* chore: Fix merge conflicts

Co-authored-by: Chillar Anand <anand21nanda@gmail.com>
2021-08-27 16:18:34 +05:30
Frappe PR Bot
c4a845d29b fix: period closing voucher tests (#27198) (#27199)
(cherry picked from commit 987746592c)

Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
2021-08-27 16:15:57 +05:30
Nabin Hait
1b3ff3a8f3 Merge branch 'alyf-de-si_total_billing_hours_v13' into version-13-hotfix 2021-08-27 15:53:52 +05:30
Nabin Hait
8547cb5448 fix: merge conflict 2021-08-27 15:53:32 +05:30
Frappe PR Bot
0767d2dac2 fix: v13 migration fails due to missing reload_doc (#27192) (#27194)
closes #25948

(cherry picked from commit 1eb2526d0b)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-08-27 12:59:00 +05:30
Ankush Menat
1eb2526d0b fix: v13 migration fails due to missing reload_doc (#27192)
closes #25948
2021-08-27 11:24:38 +05:30
Frappe PR Bot
64fab5b7d1 fix: operation time auto set to zero (#27190)
* fix: operation time auto set to zero (#27188)

(cherry picked from commit e6799d78ef)

# Conflicts:
#	erpnext/patches.txt

* fix: conflicts

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2021-08-27 11:02:44 +05:30
Frappe PR Bot
85fe755f89 fix: operation time auto set to zero (#27189)
* fix: operation time auto set to zero (#27188)

(cherry picked from commit e6799d78ef)

# Conflicts:
#	erpnext/patches.txt

* Update patches.txt

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2021-08-27 11:02:37 +05:30
Frappe PR Bot
03039b9e00 fix: use Stripe's Price API for plan-price information (#27183)
* fix: use Stripe's Price API for plan-price information (#26107)

* fix: use Stripe's new Plan API for price information

* patch: use inbuilt function to rename field

* fix: patch call

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
Co-authored-by: Nabin Hait <nabinhait@gmail.com>
(cherry picked from commit 16eed07a0f)

# Conflicts:
#	erpnext/patches.txt

* fix: resolve conflicts

Co-authored-by: Rohan <Alchez@users.noreply.github.com>
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-08-27 10:45:34 +05:30
Deepesh Garg
21d5b3cf4d fix: Base amount in tax GL Entry 2021-08-26 23:53:18 +05:30
Frappe PR Bot
25305cbeb3 fix: fetch from more than one sales order in Maintenance Visit (#26924) (#27187)
* [fix] #26336

* fix(ux): make customer field reqd for fetching SO

Co-authored-by: Pawan Mehta <mehtapawan007@gmail.com>
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>

(cherry picked from commit db69d1dc00)
2021-08-26 23:03:20 +05:30
Richard Case
69d88a9212 fix: Production Plan: load document defaults for plan items & remove name column from listview (#26584) 2021-08-26 21:52:16 +05:30
Frappe PR Bot
485b55a799 fix: Pricing Rule on Transaction Based on Coupon (#26949) (#27182)
(cherry picked from commit f91faac7cd)

Co-authored-by: Lovin Maxwell <lovinmaxwell@gmail.com>
2021-08-26 21:33:20 +05:30
Frappe PR Bot
8dae084f23 chore: remove deprecated and empty QUnit tests (#27179) (#27181)
* chore: remove deprecated and empty QUnit tests

* ci: fix UI test config

Testing library was added on Frappe, in order to reuse command testing
library has to be installed during setup process.

(cherry picked from commit ae55eab599)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-08-26 21:08:08 +05:30
marination
d3702947b8 fix: Sider and CI
- Incorrect path and Settings in price_list.py import due to merge
- Extra space removed in website_item.py
- Changed client side namespace to `erpnext.e_commerce.*`
2021-08-26 20:58:13 +05:30
Saqib
dd1aa5559a feat: depreciate Asset after sale (#27168) 2021-08-26 20:55:22 +05:30
Frappe PR Bot
a9e78e2d3a fix(ux): hide irrelevant fields for asset items (#26274) (#27180)
(cherry picked from commit a9852a5483)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-08-26 20:12:26 +05:30
Ganga Manoj
6d28507def feat: Handle Asset on Issuing Credit Note (#26519)
* fix(Sales Invoice): Let invoice be created for Sold Assets if it's a return invoice

* fix(Sales Invoice): Print appropriate message if item.asset is missing when the Item is a Fixed Asset

* fix(Sales Invoice): Fix GL Entry creation for Return Invoices linked with Assets

* fix(Sales Invoice): Print appropriate message if Asset isn't specified when the Item is a Fixed Asset

* fix(Sales Invoice): Let invoice be created for Sold Assets if it's a return invoice

* fix(Sales Invoice): Reset disposal_date on returning the Asset

* fix: Rename get_gl_entries_on_asset_movement to get_gl_entries_on_asset_disposal_and_regain

* fix: Make functions more readable

* fix: Let create_item() make items that are fixed assets

* fix: Test GL Entries made when an Asset is returned

* fix: Create asset data

* fix: Test

Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
2021-08-26 20:11:18 +05:30
Frappe PR Bot
31561c3f9a fix: cannot reconcile bank transactions against internal transfer payment entries (#27148)
* fix: cannot reconcile bank transactions against internal transfer payment entries (#26932)

* fix: Only set Clearance Date for Payment Entries of type Internal Transfer if both Transactions have been reconciled

* fix: Reset clearance_date for intra-company Payment Entries that have only been reconciled with one Bank Transaction

* fix: indentation and args

Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
Co-authored-by: Nabin Hait <nabinhait@gmail.com>
(cherry picked from commit 842ceb1301)

# Conflicts:
#	erpnext/patches.txt

* fix: merge conflict

* fixed patches

Co-authored-by: Ganga Manoj <ganga.manoj98@gmail.com>
Co-authored-by: Nabin Hait <nabinhait@gmail.com>
2021-08-26 19:57:56 +05:30
Frappe PR Bot
e553fa22f3 fix: Customers 'primary_address' not updated automatically (#26798) (#26799) (#27178)
* Fix for Issue #26798

This PR is a fix for GitHub Issue 26798:
https://github.com/frappe/erpnext/issues/26798

TLDR:  When an Address is updated, and that Address is a Customer's Primary Address, update the Read Only field `customer.primary_address`

* Update address.py

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
(cherry picked from commit 1a919773d7)

Co-authored-by: Brian Pond <PMojito@users.noreply.github.com>
2021-08-26 19:50:44 +05:30
rohitwaghchaure
7c31e1f8bf chore: merge branch 'version-13-hotfix' into 'version-13-pre-release' (#27173)
* feat: add provision for process loss in manufac

* feat: add is process loss autoset and validation

* fix: add warehouse and unset is scrap for process loss items

* refactor: shift auto entry of is process loss check, update validations

* test: add bom tests for process loss val, add se test for qty calc

* fix: add more validations, remove source wh req for pl item

* fix: sider

* refactor: polyfill ??

* fix: sider

* refactor: validation error message formatting

* test: check manufacture completion qty in se and wo

* fix: wo tests, sider, account for pl in se validation

* fix: reword error messages, fix test values

* feat: add procss_loss_qty field in work order

* feat: process loss report, fix set pl query condition

* fix: correct value in test

* fix: get filters to work
- reorder and rename columns
- add work order filter

* fix: Shopping cart Exchange rate validation (#27050)

* fix: Shopping cart Exchange rate validation

- Use `get_exchange_rate` to check for price list exchange rate in cart settings
- Move cart exchange rate validation for Price List from hooks to doc event
- Call cart exchange rate validation on PL update only if PL is in cart and currency is changed

* chore: Comment out obsolete test

- Modifying this test means considering extreme edge cases, which seems pointless now

* fix: Remove snippet that got in due to cherry-pick from `develop`

- This snippet is not present in v13-hotfix. Via https://github.com/frappe/erpnext/pull/26520

Co-authored-by: Nabin Hait <nabinhait@gmail.com>

* feat: initialize party link for customer & suppliers

* feat: toggle to enable common party accounting

* feat: auto create advance entry on invoice submission

* test: creation of advance entry on invoice submission

* fix: remove unwanted filter query

* feat: validate multiple links

* fix: party link permissions

* perf: reduce number of queries to get party link

* fix: cost center & naming series

* fix: cost center in test_sales_invoice_against_supplier

* fix: Don't create inward SLE against SI unless is internal customer enabled (#27086)

* fix: Dont create inward SLE against SI unless is internal customer enabled

- Check if is internal customer enabled apart from target warehouse
- Test to check if inward SLE is made if target warehouse is accidentally set but customer is not internal

* test: Use internal customer for delivery of bundle items to target warehouse

- created `create_internal_customer` util
- reused it in delivery note and sales invoice tests
- use internal customer for target warehouse test in delivery note

(cherry picked from commit f4dc9ee2aa)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py

* fix: prevent over riding scrap table values, name kwargs, set currency

* fix(regional): minor fixes and test for South Africa VAT report (#26933) (#27162)

* fix: allow to change incoming rate manually in case of stand-alone credit note (#27164)

* fix: allow to change rate manually in case of stand-alone credit note (#27036)

Co-authored-by: Marica <maricadsouza221197@gmail.com>
(cherry picked from commit fe4540d74d)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json

* fix: resolve conflicts

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>

* fix: Fee Validity fixes (#27161)

* fix: Fee Validity fixes (#27156)

* chore: update Fee Validity form labels

* fix: first appointment should not be considered for Fee Validity

* fix: Fee Validity test cases

* fix: appointment test case

(cherry picked from commit 642b4c805c)

* fix: overlapping appointments

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>

* fix: Merge conflicts and place internal customer creation util in test_customer.py

* fix: internal customer util returns 'str' not doc object

* fix: negative qty validation on stock reco cancellation (#27170) (#27171)

* test: negative stock validation on SR cancel

* fix: negative stock setting ignored in stock reco

In stock reconcilation cancellation negative stock setting is ignored as
`db.get_value` is returning string `'0'` which is not casted to int/bool
for further logic. This causes negative qty, which evantually gets
caught by reposting but by design this should stop cancellation.

* test: typo and minor refactor

(cherry picked from commit e7109c18db)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>

Co-authored-by: 18alantom <2.alan.tom@gmail.com>
Co-authored-by: Marica <maricadsouza221197@gmail.com>
Co-authored-by: Nabin Hait <nabinhait@gmail.com>
Co-authored-by: Saqib Ansari <nextchamp.saqib@gmail.com>
Co-authored-by: Frappe PR Bot <frappe.pr.bot@gmail.com>
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-08-26 19:49:27 +05:30
Frappe PR Bot
9ff14f8609 fix: Use reverse debit and credit to get net amount in GL Entries (#27174) (#27177)
* fix: Use reverse debit and credit to get net amount in GL Entries

* fix: Remove unused import

(cherry picked from commit 4b1f165429)

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-08-26 19:49:09 +05:30
Frappe PR Bot
c5c78641e1 fix: don't allow BOM's item code at any level of child items (#27157) (#27176)
* refactor: bom recursion checking

* fix: dont allow bom recursion

if same item_code is added in child items at any level, it shouldn't be allowed.

* test: add test for bom recursion

* test: fix broken prodplan test using recursive bom

* test: fix recursive bom in tests

(cherry picked from commit c07dce940e)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-08-26 19:05:13 +05:30
rohitwaghchaure
409cc95b7b Merge pull request #27158 from rohitwaghchaure/merge-branch-hotfix-to-pre-release-for-13-10
chore: merge version-13-hotfix into version-13-pre-release for release v13.10.0
2021-08-26 17:39:58 +05:30
Frappe PR Bot
2ad531f66b fix: negative qty validation on stock reco cancellation (#27170) (#27171)
* test: negative stock validation on SR cancel

* fix: negative stock setting ignored in stock reco

In stock reconcilation cancellation negative stock setting is ignored as
`db.get_value` is returning string `'0'` which is not casted to int/bool
for further logic. This causes negative qty, which evantually gets
caught by reposting but by design this should stop cancellation.

* test: typo and minor refactor

(cherry picked from commit e7109c18db)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-08-26 17:14:17 +05:30
marination
06a6fd512a Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into e-commerce-refactor 2021-08-26 16:53:59 +05:30
Marica
6ed52799d7 Merge pull request #27166 from frappe-pr-bot/backport/version-13-hotfix/27086
fix: Don't create inward SLE against SI unless is internal customer enabled
2021-08-26 16:43:14 +05:30
marination
614ee71778 fix: internal customer util returns 'str' not doc object 2021-08-26 16:22:35 +05:30
Marica
6e136c4377 Merge pull request #26151 from 18alantom/feat-bom-process-loss
feat: add provision for process loss in manufac
2021-08-26 16:11:58 +05:30
Marica
8db44189b6 Merge branch 'version-13-hotfix' into feat-bom-process-loss 2021-08-26 16:11:24 +05:30
Marica
57972cab48 Merge branch 'version-13-hotfix' into backport/version-13-hotfix/27086 2021-08-26 15:55:48 +05:30
marination
55ff6277a7 fix: Merge conflicts and place internal customer creation util in test_customer.py 2021-08-26 15:42:23 +05:30
Frappe PR Bot
d12fe79494 fix: Fee Validity fixes (#27161)
* fix: Fee Validity fixes (#27156)

* chore: update Fee Validity form labels

* fix: first appointment should not be considered for Fee Validity

* fix: Fee Validity test cases

* fix: appointment test case

(cherry picked from commit 642b4c805c)

* fix: overlapping appointments

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-08-26 14:59:21 +05:30
Frappe PR Bot
c3b1376517 fix: allow to change incoming rate manually in case of stand-alone credit note (#27164)
* fix: allow to change rate manually in case of stand-alone credit note (#27036)

Co-authored-by: Marica <maricadsouza221197@gmail.com>
(cherry picked from commit fe4540d74d)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json

* fix: resolve conflicts

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-08-26 14:36:42 +05:30
Saqib
58dca11cae Merge pull request #27165 from nextchamp-saqib/common-party-acc-v13
feat: common party accounting
2021-08-26 13:47:58 +05:30
Frappe PR Bot
ed617d0939 fix(regional): minor fixes and test for South Africa VAT report (#26933) (#27162) 2021-08-26 13:27:39 +05:30
18alantom
f7f573b11b fix: prevent over riding scrap table values, name kwargs, set currency 2021-08-26 13:19:10 +05:30
Marica
6636d857f7 fix: Don't create inward SLE against SI unless is internal customer enabled (#27086)
* fix: Dont create inward SLE against SI unless is internal customer enabled

- Check if is internal customer enabled apart from target warehouse
- Test to check if inward SLE is made if target warehouse is accidentally set but customer is not internal

* test: Use internal customer for delivery of bundle items to target warehouse

- created `create_internal_customer` util
- reused it in delivery note and sales invoice tests
- use internal customer for target warehouse test in delivery note

(cherry picked from commit f4dc9ee2aa)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
2021-08-26 07:47:13 +00:00
18alantom
466ff46045 Merge branch 'version-13-hotfix' into feat-bom-process-loss 2021-08-26 13:16:43 +05:30
Saqib Ansari
abde7fc085 fix: cost center in test_sales_invoice_against_supplier 2021-08-26 13:04:49 +05:30
Saqib Ansari
970e5af051 fix: cost center & naming series 2021-08-26 13:04:38 +05:30
Saqib Ansari
fb6af0481c perf: reduce number of queries to get party link 2021-08-26 13:04:31 +05:30
Saqib Ansari
e0649c132e fix: party link permissions 2021-08-26 13:04:24 +05:30
Saqib Ansari
f5afd51fa4 feat: validate multiple links 2021-08-26 13:04:13 +05:30
Saqib Ansari
a87139e16a fix: remove unwanted filter query 2021-08-26 13:02:08 +05:30
Saqib Ansari
da54f0a583 test: creation of advance entry on invoice submission 2021-08-26 13:02:05 +05:30
Saqib Ansari
2cb8cc525c feat: auto create advance entry on invoice submission 2021-08-26 13:01:21 +05:30
Saqib Ansari
fb94726d26 feat: toggle to enable common party accounting 2021-08-26 13:01:19 +05:30
Saqib Ansari
5a06618280 feat: initialize party link for customer & suppliers 2021-08-26 13:00:22 +05:30
Marica
16fbee30a6 fix: Shopping cart Exchange rate validation (#27050)
* fix: Shopping cart Exchange rate validation

- Use `get_exchange_rate` to check for price list exchange rate in cart settings
- Move cart exchange rate validation for Price List from hooks to doc event
- Call cart exchange rate validation on PL update only if PL is in cart and currency is changed

* chore: Comment out obsolete test

- Modifying this test means considering extreme edge cases, which seems pointless now

* fix: Remove snippet that got in due to cherry-pick from `develop`

- This snippet is not present in v13-hotfix. Via https://github.com/frappe/erpnext/pull/26520

Co-authored-by: Nabin Hait <nabinhait@gmail.com>
2021-08-26 12:23:52 +05:30
Rohit Waghchaure
327be1cd9d chore: merge version-13-hotfix into version-13-pre-release for release v13.10.0 2021-08-26 11:45:55 +05:30
Frappe PR Bot
6609321399 fix: removing toggle_display for address and contact HTML (#27152) (#27155)
(cherry picked from commit c8f22e5524)

Co-authored-by: Anupam Kumar <anupamvns0099@gmail.com>
2021-08-26 11:02:01 +05:30
Frappe PR Bot
7f27586cbe fix(healthcare): Removed ignore user permissions flag in appointment (#27146)
* fix(healthcare): Removed ignore user permissions flag in appointment (#27129)

(cherry picked from commit 81b28b8998)

# Conflicts:
#	erpnext/healthcare/doctype/patient_appointment/test_patient_appointment.py

* chore: Fix merge conflicts

Co-authored-by: Chillar Anand <anand21nanda@gmail.com>
2021-08-25 22:26:09 +05:30
Frappe PR Bot
4837d8872e fix: unable to create manual / auto asset depreciation entry when cost_center is mandatory (#26912) (#27149)
Summary : unable to create manual / auto asset depreciation entry when cost_center is mandatory

Reason: Though we are calculating value for depreciation_cost_center, it is not passed in credit_entry(it is passed in debit_entry) and this prevents creation of manual / auto asset depreciation entry when cost_center is mandatory

Solution : pass already calculated depreciation_cost_center value in credit_entry (in line with, already done as in debit_entry)
(cherry picked from commit b99c011947)

Co-authored-by: Ashish Shah <mr.ashish.shah@gmail.com>
2021-08-25 22:25:29 +05:30
Nabin Hait
014df08e7b Merge branch 'alyf-de-datev_more_info' into version-13-hotfix 2021-08-25 21:23:45 +05:30
Nabin Hait
09fb90b8ac fix: merge conflict 2021-08-25 21:23:24 +05:30
Dany Robert
7b9a23eb7a feat: Increase number of supported currency exchanges (#26763)
* fix: update test suite to accodomate new currency exchange function

* feat: Increase number of supported currency exchanges

* fix: don't make api call when testing

* remove condition for test(being fixed in another pull request)
2021-08-25 21:15:44 +05:30
Frappe PR Bot
0fe6995816 fix: sequence of sub-operations in job card (#27138) (#27147)
(cherry picked from commit ad45ddcabe)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2021-08-25 20:11:23 +05:30
Frappe PR Bot
f8ec0b6a86 feat: provision to create customer from opportunity (#27145)
* feat: provision to create customer from opportunity (#27141)

* feat: provision to create customer from opportunity

* fead: linking of address and contact

* revert: create_opportunity_address_contact

* enabming print hide and no copy

(cherry picked from commit 4d98be2126)

# Conflicts:
#	erpnext/crm/doctype/opportunity/opportunity.js

* Update opportunity.js

* fix: conflicts

Co-authored-by: Anupam Kumar <anupamvns0099@gmail.com>
Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-08-25 20:05:54 +05:30
18alantom
c703ce1c61 fix: get filters to work
- reorder and rename columns
- add work order filter
2021-08-25 19:01:35 +05:30
Frappe PR Bot
4c3034ad79 fix: remove VARCHARs from Sales Invoice (#27136) (#27139)
Sales Invoice doctype is starting to hit row length limit as many
integrations add custom fields on this doctype. This is just a small
change to remove VARCHAR(140) fields and reduce row size wherever
possible.

(cherry picked from commit 8d116fb9ff)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-08-25 17:47:51 +05:30
Alan
1be810479c refactor: update stock module onboarding (#25745)
* refactor: update stock onboarding

* refactor: add form tour for stock module onboarding

* refactor: move trailing whitespace out of translate func

* refactor: sider/semgrep

* refactor: remove DN, PR; change wording, add/remove steps in tour

* refactor: add watch video step for stock opening balance

* refactor: reorder steps according to stock settings refactor

* refactor: fix typo, remove target warehouse cause SE Type dependency

* fix: semgrep, remove trailing and leading whitespaces

* refactor: reduce steps, reword cards

* fix: minor changes

- remove Is Group from warehouse
- change stock entry type
- link to stock entry type
- add posting date to stock reco
- change report to Stock Projected Qty
- highlight quality inspection action
- remove allow neg highlight

* refactor: use Form Tour doc instead of controller form tour

note - keeping controller form tours as a fallback, new form tours
seem to work only for Stock Settings

* fix: rename form tours to doctype names, remove tours from js controllers

* fix: re-order tour to circumvent glitchy save highlight
2021-08-25 17:45:55 +05:30
Frappe PR Bot
d97a87e28d fix(healthcare): Made payment fields mandatory for new appointments (#27135)
* fix(healthcare): Made payment fields mandatory for new appointments (#26608)

* fix(healthcare): Made payment fields mandatory for new appointments

* fix: sider issues

* fix: Fix failing test

* fix: Patient appointment invoicing

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
Co-authored-by: Syed Mujeer Hashmi <mujeerhashmi@4csolutions.in>
(cherry picked from commit a65498dc61)

# Conflicts:
#	erpnext/healthcare/doctype/patient_appointment/patient_appointment.json
#	erpnext/healthcare/doctype/patient_appointment/test_patient_appointment.py

* chore: Fix merge conflicts

* chore: Fix failing tests

Co-authored-by: Chillar Anand <anand21nanda@gmail.com>
2021-08-25 17:12:04 +05:30
Frappe PR Bot
7ac4916191 feat: unreconcile on cancellation of bank transaction (#27109) (#27137) 2021-08-25 16:59:03 +05:30
Deepesh Garg
4eb7c2a011 fix: TDS calculation on net total (#27058) 2021-08-25 16:54:45 +05:30
Marica
dc6a8863e9 Merge branch 'version-13-hotfix' into e-commerce-refactor 2021-08-25 14:35:06 +05:30
marination
c1f6898f1a refactor: Cache Item Reviews and other review feedback
- `get_doc` -> `get_values` and `db.sql` -> `db.delete` in Wishlist Item deletion
- cache first page of Item Reviews and burst cache on addition and deletion of reviews
- Update redisearch docs link in E Commerce Settings
- Removed unused cint import
- Broke setting attribute context into smaller functions and code cleanup
- Minor recommended items padding tweak
- Item reviews form dict now uses website item as key
- Customer reviews rendered from UI style consistency
- Stock status consistency in listing and full page
- Handle no price in variant dialog for matched item
2021-08-25 14:34:13 +05:30
Frappe PR Bot
fcb17f047d fix: validate party and party type only if both available (#27002) (#27133)
* fix: validate party and party type only if both available

* fix: indentation

(cherry picked from commit 8366b6322e)

Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-08-25 12:49:04 +05:30
Marica
688fe4192c Merge pull request #27118 from 18alantom/fix-scrap-items-updation-bp
fix: update scrap table item details; typo (backport #27052)
2021-08-25 12:36:14 +05:30
rohitwaghchaure
2b875bbf52 Merge pull request #27127 from rohitwaghchaure/v13-fixed-stock-ledger-report-with-included-uom
fix: stock ledger report not working if include uom selected in filter
2021-08-25 01:24:53 +05:30
Rohit Waghchaure
1810b73113 fix: stock ledger report not working if include uom selected in filter 2021-08-25 01:24:02 +05:30
rohitwaghchaure
2ea108ae92 Merge pull request #27126 from rohitwaghchaure/fixed-donot-overrride-batch-no-v13
fix: selected batch no changed on updation of qty
2021-08-25 01:23:10 +05:30
Rohit Waghchaure
2f71b740fd fix: selected batch no changed on updation of qty 2021-08-25 01:22:04 +05:30
Frappe PR Bot
5b411dc1f6 fix: Updated timestamp for pos invoice json (#27110) (#27123)
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
(cherry picked from commit fbc5977248)

Co-authored-by: Subin Tom <36098155+nemesis189@users.noreply.github.com>
2021-08-24 23:18:35 +05:30
Frappe PR Bot
f13ae4de0b fix: broken URL in supplier portal (#26823) (#27122)
* fix: broken URL

The quotations are supplier quotations, not sales quotation.

* fix: remove erpnext from path

(cherry picked from commit c7bad657b1)

Co-authored-by: Dany Robert <rtdany10@gmail.com>
2021-08-24 22:28:29 +05:30
Frappe PR Bot
b3ffa0eb57 fix(minor): Update GSTR-1 json version (#27074) (#27121)
(cherry picked from commit c30fb04e96)

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-08-24 22:28:07 +05:30
Anuja Pawar
8220117500 feat(regional): South Africa VAT Audit Report (#27017)
* feat: SA VAT Report

* fix: added party column and fixed permissions

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
Co-authored-by: Nabin Hait <nabinhait@gmail.com>
2021-08-24 22:02:05 +05:30
Deepesh Garg
74073ddc85 fix: Ignore due date validations if payment terms are copied from orders/receipts (#27120) 2021-08-24 21:56:49 +05:30
Frappe PR Bot
8474961b79 perf: reduce number of queries to validate selling price (#26225) (#27119)
* perf: reduce number of queries to validate selling price

* fix: improved flow and formatting

* fix: improve condition and use of `as_dict`

Co-authored-by: Sagar Vora <sagar@resilient.tech>
(cherry picked from commit 7c957d72b3)

Co-authored-by: Pruthvi Patel <pruthvipatel145@gmail.com>
2021-08-24 21:51:53 +05:30
Nabin Hait
487952a04e Merge branch 'version-13-hotfix' into fix-scrap-items-updation-bp 2021-08-24 21:08:14 +05:30
Frappe PR Bot
c7508a034a feat: allow draft pos invoices even if no stock available (#27078) (#27106)
(cherry picked from commit f47cbae5e0)

Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-08-24 20:51:30 +05:30
18alantom
38898d33c6 fix: update scrap table item details; typo 2021-08-24 20:39:51 +05:30
18alantom
8c4d80a58a Merge branch 'feat-bom-process-loss' of https://github.com/18alantom/erpnext into feat-bom-process-loss 2021-08-24 20:19:35 +05:30
18alantom
9e96861f15 fix: correct value in test 2021-08-24 20:19:20 +05:30
Alan
b58496dda4 Merge branch 'version-13-hotfix' into feat-bom-process-loss 2021-08-24 20:12:01 +05:30
Frappe PR Bot
0bf9d1b29f fix: pos invoice test (#27116) 2021-08-24 19:48:05 +05:30
Frappe PR Bot
a7cdba24bc feat: coupon code discount in pos invoice (#27103) 2021-08-24 19:47:40 +05:30
Saqib
f84740e6e4 fix: incorrect gl entry on period closing involving finance books (#27104) 2021-08-24 19:46:35 +05:30
Mohammad Hussain Nagaria
24b2a31581 feat: Employee reminders (#25735)
* feat: Add reminders section to HR Settings

* refactor: Extract generic function for getting Employees

* feat: Employee Work Anniversary Reminder

* feat: Daily Holiday Reminder

* fix: Unnecessary params and replace [] with .get()

* test: Daily Holiday Reminders

* test: is_holiday basic tests

* refactor: Move employee reminders code to separate module

* feat: Add advance reminder to HR settings

* feat: Advance Holiday Reminders

* refactor: get_holidays_for_employee

* feat: Email holiday reminders in advance + tests

* fix: Remove unused import

* refactor: HR Setting Reminder Section

* refactor: Remove Daily Holiday Reminders feat

* feat: Reminder miss warning

* fix: Failing test and function name change

* chore: Add patch for field rename

* chore: Rename frequency label

* fix: Failing patch test

* fix: sider and removed description of fields

* fix: email alignment

Co-authored-by: pateljannat <pateljannat2308@gmail.com>
Co-authored-by: Jannat Patel <31363128+pateljannat@users.noreply.github.com>
2021-08-24 19:43:43 +05:30
Anupam Kumar
f7e0edecc9 refactor: social media post fixes (#24664)
* fix: social media post fixes

* feat: post metrics and some fixes

* fix: sider issues

* fix: sider issue

* fix: reverting optional chaning statements

* fix: sider issues

* fix: review chnages

* fix: text trigger check

* fix: sider issue
2021-08-24 19:15:56 +05:30
Frappe PR Bot
d55d200b47 fix: calculation of gross profit percentage in Gross Profit Report (#27108) 2021-08-24 18:58:56 +05:30
Frappe PR Bot
c8092b7e7a fix: correct price list rate value in return si (#27105) 2021-08-24 18:41:16 +05:30
18alantom
795efcd017 feat: process loss report, fix set pl query condition 2021-08-24 18:39:02 +05:30
Syed Mujeer Hashmi
1604b6cc63 fix: Allow backdated discharge for inpatient (#25124)
* fix: Allow backdated discharge for inpatient

The system is not flexible enough to allow backdated patient discharge.

Signed-off-by: Syed Mujeer Hashmi <mujeerhashmi@4csolutions.in>

* fix: Sider issues and test cases related to this patch

Signed-off-by: Syed Mujeer Hashmi <mujeerhashmi@4csolutions.in>

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
Co-authored-by: Jannat Patel <31363128+pateljannat@users.noreply.github.com>
2021-08-24 18:35:59 +05:30
Rucha Mahabal
27fad29ad6 refactor: Healthcare Redesign Changes (#27100)
* chore: reorder workspace cards

* fix: Patient Progress Page UI

* feat: redesign Patient History

* fix: redesign patient history card

* fix: filter style

* fix: sider

* fix: patient history and patient progress links

* fix: change percentage/donut charts to bar charts

-percentage charts broken in redesign

* fix(style): patient progress heatmap

* chore: semgrep and translation fixes

* fix: patient progress page card views

* fix: tests
2021-08-24 17:54:28 +05:30
Deepesh Garg
0476accf26 fix: Payment Reconciliation link in Accounting Workspace (#27085) 2021-08-24 16:27:10 +05:30
18alantom
a14b93d0d8 feat: add procss_loss_qty field in work order 2021-08-24 16:11:48 +05:30
marination
341d9b4b6d chore: Remove Home Page is Products and Sider fixes
- Removed `Home Page is Products` checkbox in E Comm Settings. Can be manually set in Website Settings
- Removed hooks trigger to reset home page as products
- Sider: duplicate color attribute, shift `return` to next line, over-indentation
2021-08-24 13:52:46 +05:30
Sagar Vora
925a4a28e2 Merge pull request #27092 from frappe-pr-bot/backport/version-13-hotfix/27008
refactor: use `read_only_depends_on` instead of code
2021-08-24 13:33:19 +05:30
Afshan
ac0800511d fix: resolved conflicts 2021-08-24 12:59:07 +05:30
Afshan
d360819384 Merge branch 'version-13-hotfix' into backport/version-13-hotfix/27008 2021-08-24 12:53:13 +05:30
Marica
ff6cda8547 Merge pull request #27096 from frappe-pr-bot/backport/version-13-hotfix/27043
fix(ux): keep stock entry title & purpose in sync
2021-08-24 12:46:31 +05:30
rohitwaghchaure
60c06d3194 Merge pull request #26455 from noahjacob/supplier_defaults_v13hf
feat: fetching details from supplier/customer groups
2021-08-24 12:31:01 +05:30
rohitwaghchaure
5320f3e5ea Merge branch 'version-13-hotfix' into supplier_defaults_v13hf 2021-08-24 12:28:16 +05:30
Ankush Menat
cc7ed1573a fix(ux): keep stock entry title & purpose in sync (#27043)
Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
(cherry picked from commit c09d8a2809)
2021-08-24 06:55:25 +00:00
Marica
b932b3f252 Merge pull request #27093 from frappe-pr-bot/backport/version-13-hotfix/27014
fix: stock analytics report date range issues and add company filter
2021-08-24 12:21:43 +05:30
Frappe PR Bot
1e3a6a8a98 fix: discard empty rows from update items (#27021) (#27095)
(cherry picked from commit 6de7b8ea93)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-08-24 12:20:51 +05:30
Ankush Menat
0a23328151 fix: stock analytics report date range issues and add company filter (#27014)
* test: tests for correct get_period_date_ranges

* fix: stock analytics report date range issues

- Upon selecting second half of month with Monthly filter, data from
  that period was missing.
- Solution: "round down" the date as per expected frequency.

* chore: drop py2 and fix misleading docstring

* test: fix test to avoid FY clash

* feat: add company filter in stock analytics report

[skip ci]

Co-authored-by: Marica <maricadsouza221197@gmail.com>
(cherry picked from commit 0dff0beaba)
2021-08-24 06:47:49 +00:00
Pruthvi Patel
f08d7410be refactor: use read_only_depends_on instead of code (#27008)
(cherry picked from commit 332ac105b5)

# Conflicts:
#	erpnext/accounts/doctype/pos_invoice/pos_invoice.js
#	erpnext/accounts/doctype/sales_invoice/sales_invoice.js
2021-08-24 06:38:39 +00:00
marination
280f615ded Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into e-commerce-refactor 2021-08-24 11:48:13 +05:30
Nabin Hait
352157c9fc Merge pull request #27005 from frappe/addl_salary_fix-v13
fix: Additional salary processing
2021-08-24 10:35:51 +05:30
Deepesh Garg
85f582b145 Merge pull request #26725 from deepeshgarg007/payment_entry_validations_and_trigger
fix: Multiple fixes in payment entry
2021-08-23 18:03:11 +05:30
Frappe PR Bot
3d047b83fd fix: Eway bill test update to check ver 1.0.0421 (#27083) (#27084) 2021-08-23 15:43:30 +05:30
Frappe PR Bot
6814509f07 fix: eway bill version changed to 1.0.0421 (#27077) 2021-08-23 15:43:06 +05:30
Saqib
dbca11071e refactor: scan barcode field scanning (#26990) (#27076) 2021-08-23 11:23:46 +05:30
Deepesh Garg
dd688db54c Merge pull request #27072 from frappe-pr-bot/backport/version-13-hotfix/27069
feat: Column for total amount due in Accounts Receivable/Payable Summary
2021-08-22 23:15:58 +05:30
Deepesh Garg
be57dee57a Merge pull request #27068 from frappe-pr-bot/backport/version-13-hotfix/26975
fix: Consolidated balance sheet showing incorrect values
2021-08-22 18:14:15 +05:30
Deepesh Garg
67dbb2bd7f feat: Column for total amount due in Accounts Receivable/Payable Summary (#27069)
(cherry picked from commit 496bff5136)
2021-08-22 12:41:50 +00:00
Deepesh Garg
571178ffbe fix: Revert commit 46372fe 2021-08-22 18:02:51 +05:30
Deepesh Garg
9542da80c5 test: Update test cases 2021-08-21 19:36:38 +05:30
Deepesh Garg
593ab98575 Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into payment_entry_validations_and_trigger 2021-08-21 19:19:10 +05:30
Deepesh Garg
43813875ea fix: Consolidated balance sheet showing incorrect values (#26975)
(cherry picked from commit 57e326e7d0)
2021-08-21 12:30:23 +00:00
Ankush Menat
d0e393a4cc fix: Incorrect mandatory error message for warehouse (#27060)
Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2021-08-20 18:33:28 +05:30
Ankush Menat
05c7905fa3 fix(ux): removed rate from grid view (#27061)
Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2021-08-20 18:33:08 +05:30
Frappe PR Bot
3f05d928a3 refactor: rectify typo (#27057) (#27059)
[skip ci]

(cherry picked from commit 62c590261c)

Co-authored-by: Alan <2.alan.tom@gmail.com>
2021-08-20 18:24:49 +05:30
Frappe PR Bot
2fd823ffb6 fix: Cascade deletion for Company (#26923) (#27053)
* fix: Cascade deletion for Company

(cherry picked from commit 2b2572b9b9)

Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
2021-08-20 15:20:50 +05:30
Frappe PR Bot
52570cc1f9 refactor: renamed varint_item_code to variant_item_code (#27025) (#27046)
(cherry picked from commit f13315809e)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2021-08-19 20:55:45 +05:30
Frappe PR Bot
5c6f6c16d6 fix: pass planned start date to created work order (#27031) (#27042)
* fix: pass planned start date to created workorder

* test: production plan to work order start date

Co-authored-by: Alan <2.alan.tom@gmail.com>
Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
(cherry picked from commit 9225f02599)
2021-08-19 18:56:26 +05:30
Anoop
ee9b6d158a feat(Healthcare): Capacity for Service Unit, concurrent appointments based on Capacity, Patient enhancements (#24860)
* fix: (tests) get_healthcare_docs and get_medical_department separated, related changes

* feat: Service Unit option to allow overlap, overlap capacity
Appointment to allow overlapping appointments

Co-authored-by: Akash Krishna <akash@earthianslive.com>

* feat: Create multiple service units from tree view

Co-authored-by: Akash Krishna <akash@earthianslive.com>

* feat: patient address and contact
patient dashboard links, customer stats

* fix: sider review

* fix: untranslated message

* fix: enable non-negative check for service unit capacity

- incorrect depends on statement in dialog

* refactor(UX): Available Slots Dialog

* chore: remove unused field from Healthcare Service Unit Type

Co-authored-by: Akash Krishna <akash@earthianslive.com>
Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-08-19 18:15:51 +05:30
Frappe PR Bot
c192e9457e fix: add child item groups into the filters (#26997) (#27035)
* fix: add child item groups into the filters

* fix: appending values to proper variable

* fix: refactor the loop

(cherry picked from commit c60d5523bc)

Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-08-19 16:44:56 +05:30
Frappe PR Bot
74af3be968 fix: set production plan to completed even on over production (#27027) (#27032)
(cherry picked from commit 09f34e558e)

Co-authored-by: Alan <2.alan.tom@gmail.com>

[skip ci]
2021-08-19 10:50:06 +00:00
Subin Tom
02a23bae58 Fix: Payment Entry party validation issue (#27022)
Co-authored-by: Subin Tom <subin-home@Subins-MacBook-Air.local>
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-08-19 15:49:16 +05:30
Frappe PR Bot
df32fe3d49 Merge pull request #27026 from ankush/eq_assign (#27030)
fix: equality check instead of assignment

[skip ci]

(cherry picked from commit 993b0532f8)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-08-19 15:45:39 +05:30
Ankush Menat
92b3743c54 Merge pull request #27024 from ankush/whitespace_fix
chore: whitespace cleanup from codebase
2021-08-19 14:57:57 +05:30
Ankush Menat
b42c23cad6 chore: ignore whitespace changes in git blame 2021-08-19 14:36:17 +05:30
Rohit Waghchaure
23c713cc9b Merge branch 'version-13-pre-release' into version-13 2021-08-19 14:35:52 +05:30
Rohit Waghchaure
f0d3a074e0 bumped to version 13.9.2 2021-08-19 14:55:52 +05:50
Ankush Menat
9bb69e711a chore: whitespace cleanup from codebase 2021-08-19 14:33:03 +05:30
Frappe PR Bot
e536f6d13f fix: assigning values to rows in sales register reports (#26546) (#27020)
* fix: assigning values to rows in sales register reports

* fix: check for is_internal_customer for unrealized_profit_loss_account

(cherry picked from commit ecd6584c50)

Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-08-19 13:30:50 +05:30
Frappe PR Bot
f37747da25 fix: Add ignore user perms to set_target_warehouse field in sales invoice (#27013)
* fix:  Add ignore user perms to set_target_warehouse field in sales invoice (#26987)

* reverting ot v12.7.1

* fix: Ignore user permissions for set_target_warehouse in SI

Co-authored-by: Subin Tom <subin-home@Subins-MacBook-Air.local>
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
(cherry picked from commit ef792971f3)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/sales_invoice.json

* fix: conflicts

* fix: conflicts

Co-authored-by: Subin Tom <36098155+nemesis189@users.noreply.github.com>
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-08-19 12:16:15 +05:30
rohitwaghchaure
cada9b679a Merge pull request #27019 from anupamvs/email-digest-fix-pre
fix: email digest recipient patch
2021-08-19 11:49:49 +05:30
Frappe PR Bot
25b705e2ad fix: sales pipeline graph issue (#26626) (#27018)
(cherry picked from commit 34353df48c)

Co-authored-by: Anupam Kumar <anupamvns0099@gmail.com>
2021-08-19 11:46:55 +05:30
Anupam Kumar
ecbb59a1ce Merge branch 'version-13-pre-release' into email-digest-fix-pre 2021-08-19 11:14:38 +05:30
Anupam
9f79415186 fix: email digest recipient patch 2021-08-19 11:12:32 +05:30
rohitwaghchaure
87326dd489 Merge pull request #27007 from anupamvs/email-digest-fix
fix: [patch]Email digest fix
2021-08-19 11:09:21 +05:30
Frappe PR Bot
8ea5782c69 fix: filtering of items in Sales and Purchase Orders (#26936) (#27012)
* fix: filtering of items in Sales and Purchase Orders

* fix: slider

* fix: slider

(cherry picked from commit dc7280eef0)

Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-08-18 20:44:45 +05:30
Frappe PR Bot
6a35d580e4 fix: Dimension filter query fix to avoid including disabled dimensions (#26988) (#27006)
* reverting ot v12.7.1

* fix: Dimension filter query fix to not display disabled dimensions

Co-authored-by: Subin Tom <subin-home@Subins-MacBook-Air.local>
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
(cherry picked from commit 333e44eb47)

Co-authored-by: Subin Tom <36098155+nemesis189@users.noreply.github.com>
Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-08-18 18:46:25 +05:30
Frappe PR Bot
77ad668a6f fix: date_unchanged calculation in "Update Items" (#26992) (#27010)
Branch corrected https://github.com/frappe/erpnext/pull/26058

  ERPNext generates "Cannot set quantity less than delivered quantity" error even the delivered qty is zero when user clicks "Update Items".
  "date_unchanged" variable gets false value because of new_date is string.

  "getdate(new_date)" corrects the date comparison.

  ![ERPNext_PR](https://user-images.githubusercontent.com/710051/121928377-c0263180-cd48-11eb-8cd9-eda7dace09d6.gif)

(cherry picked from commit d8a7abcd02)

Co-authored-by: Türker Tunalı <turkert@hotmail.com>
2021-08-18 12:32:59 +00:00
Nabin Hait
5e1ed2d7eb fix: Message (Received Amount should be same as Paid Amount) 2021-08-18 16:46:32 +05:30
Anupam
36f18935d3 fix: email digest recipient patch 2021-08-18 16:30:45 +05:30
Anupam
01a538123b Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into version-13-hotfix 2021-08-18 16:15:38 +05:30
Nabin Hait
44919ac807 fix: Additional salary processing 2021-08-18 16:14:48 +05:30
Frappe PR Bot
e555e8cf05 fix: Return Qty in PR/DN for legacy data (#27001) (#27003)
(cherry picked from commit 112fc888f1)

Co-authored-by: Marica <maricadsouza221197@gmail.com>
2021-08-18 10:30:51 +00:00
Deepesh Garg
0f15ded0cd Merge branch 'payment_entry_validations_and_trigger' of https://github.com/deepeshgarg007/erpnext into payment_entry_validations_and_trigger 2021-08-18 15:58:46 +05:30
Deepesh Garg
46372fe5cd fix: Decide party account debit or credit on payment entry type instead of party type 2021-08-18 15:57:55 +05:30
Deepesh Garg
6950844a74 Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into payment_entry_validations_and_trigger 2021-08-18 15:29:48 +05:30
Rohit Waghchaure
8cd3ffc84d Merge branch 'version-13-pre-release' into version-13 2021-08-18 13:00:35 +05:30
Rohit Waghchaure
9c1d739946 bumped to version 13.9.1 2021-08-18 13:20:35 +05:50
Frappe PR Bot
5e17b82779 fix: set account for change amount even if pos profile not found (#26986) (#26989)
(cherry picked from commit 5fec44446e)

Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-08-17 20:34:35 +05:30
Deepesh Garg
9c401e75bb Merge pull request #26980 from deepeshgarg007/payment_entry_unallocated_fix_v13
fix: Incorrect unallocated amount calculation in payment entry
2021-08-17 19:14:07 +05:30
Deepesh Garg
c8449702b4 Merge pull request #26981 from deepeshgarg007/payment_entry_unallocated_fix_v13_pre
fix: Incorrect unallocated amount calculation in payment entry
2021-08-17 19:13:27 +05:30
Frappe PR Bot
90818d57f1 fix: change print_format_type from Server to Jinja (#26374) (#26985)
(cherry picked from commit a2966db1e5)

Co-authored-by: Mohammed Redah <mhbu50@gmail.com>
2021-08-17 13:36:08 +00:00
Deepesh Garg
0a5dff1e1f test: Add test case for payment entry 2021-08-17 18:11:29 +05:30
Ankush Menat
333d962ac2 test: fix tests failing due to doc amend feature (bp #26656) (#26907)
* test: fix test due to rename change

* test: fix attendance request tests

- Use `frappe.db.get_value` instead of `get_doc` for asserting values
- Get values after cancellation as reloading attendance doc breaks due to stale doc (primary key changed after cancel of attendance request)
- rollback everything on tearDown

* test: fix Shift Request test

- Use `get_value` instead of `get_doc`
- Remove unnecessary loop, only one shift assignment is made against a shift request
- Get value after cancel again. Get doc is not reliable since primary key changed after cancel

* test: fix POS Closing Entry Test

- Separated into two tests, one checks if SI cancelling is blocked, the other checks PCE cancel impact
- This is done because after cancel via assertRaises, damage done by cancel still exists or is partially comitted
- Dont use this partially cancelled doc for any assertions further, end test at exception assertion
- Use `get_value` to check SI docstatus, as its primary key changes after cancel

* test: fixed asset movement tests

- set cwip account in company to avoid value missing
- removed unused statement
- removed trailing spaces

* Revert "test: fix POS Closing Entry Test"

This reverts commit 8f1a3aef2e.

Co-authored-by: marination <maricadsouza221197@gmail.com>
2021-08-17 18:01:39 +05:30
Deepesh Garg
2730f51ca9 test: Add test case for payment entry 2021-08-17 17:44:30 +05:30
18alantom
f8a47525e1 fix: reword error messages, fix test values 2021-08-17 16:47:45 +05:30
Raffael Meyer
ace8cf965d fix: typo (#26967) 2021-08-17 16:13:28 +05:30
18alantom
1c23544c42 fix: wo tests, sider, account for pl in se validation 2021-08-17 15:54:27 +05:30
Deepesh Garg
e7143d8711 fix: Incorrect unallocated amount calculation in payment entry 2021-08-17 13:36:17 +05:30
Deepesh Garg
94f2c41475 fix: Incorrect unallocated amount calculation in payment entry 2021-08-17 13:31:17 +05:30
Sagar Vora
48a11591cc Merge pull request #26976 from resilient-tech/fix-incorrect-modified (#26979)
fix: Incorrect `modified` time in documents that inherit from `StatusUpdater`
(cherry picked from commit d932cba38a)

Co-authored-by: Sagar Vora <sagar@resilient.tech>
2021-08-17 13:21:00 +05:30
Sagar Vora
6e921b1ccc Merge pull request #26976 from resilient-tech/fix-incorrect-modified
fix: Incorrect `modified` time in documents that inherit from `StatusUpdater`
(cherry picked from commit d932cba38a)
2021-08-17 07:48:29 +00:00
Frappe PR Bot
133486a5c7 Merge pull request #26906 from ChillarAnand/label (#26972)
fix: Changed label to "Inpatient Visit Charge" in appointment type
(cherry picked from commit 8c851b7019)

Co-authored-by: Chillar Anand <anand21nanda@gmail.com>
2021-08-17 11:12:33 +05:30
marination
71b0e0a146 test: Product Query & Filter Engine, Item Group Page
- Test for ProductQuery engine and ProductFilters engine
- Test for engine for Item Group too
- Renamed ‘product_configurator’ to ‘variant_selector’
- Cleaned up filters.py
- Modal freeze backdrop lighter only in cart, since there’s nothing over it
- Fixed unusual spacing in variant selector dialog
- Made `get_child_groups_for_website` more readable
- Replaced ‘Configure’ with ‘Select’ for variant selection
2021-08-17 01:55:46 +05:30
Deepesh Garg
94030e08f1 Merge pull request #26963 from deepeshgarg007/distributed_budget_variance_report_v13
fix: Budget variance missing values
2021-08-16 18:28:09 +05:30
Frappe PR Bot
663e550824 ci: ignore backports while checking docs (#26962) (#26965)
[skip ci]

(cherry picked from commit 2a43fe1a22)

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-08-16 18:20:07 +05:30
Deepesh Garg
d076ba5c94 fix: Budget variance missing values 2021-08-16 18:02:15 +05:30
Frappe PR Bot
3c9b8dce21 feat: Training Event Status Update and Validations (#26698) (#26961)
* fix: training event employee status not updated on feedback submission

* feat: update attendees status on training event status update

* test: Training Event and Feedback

* chore: remove unused import

(cherry picked from commit bf75ea70fb)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-08-16 17:57:14 +05:30
Frappe PR Bot
64dfbfaecb feat: enable track changes for leave type (#26917) (#26959)
Co-authored-by: Jannat Patel <31363128+pateljannat@users.noreply.github.com>
(cherry picked from commit a9a24051c9)

Co-authored-by: Anupam Kumar <anupamvns0099@gmail.com>
2021-08-16 15:17:28 +05:30
Deepesh Garg
1351d6e3be Merge pull request #26957 from deepeshgarg007/export_type_mandatory_v13
fix: Add mandatory depends on condition for export type field
2021-08-16 15:15:43 +05:30
Deepesh Garg
2aa0daf47b Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into export_type_mandatory_v13 2021-08-16 14:40:13 +05:30
Deepesh Garg
5fddd27cab fix: Add mandatory depends on condition for export type field 2021-08-16 14:34:40 +05:30
Frappe PR Bot
321dd33015 fix: Org Chart fixes (#26952) (#26953)
* fix: add z-index to filter to avoid svg wrapper overlapping

* fix: expand all nodes not working when there are only 2 levels

- added dom freeze while expanding all nodes and exporting

(cherry picked from commit 67e3971c3b)

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2021-08-16 10:44:35 +05:30
Raffael Meyer
0f2f11cb33 fix: typo 2021-08-15 18:47:51 +02:00
Raffael Meyer
fc717665ea Merge branch 'version-13-hotfix' into si_total_billing_hours_v13 2021-08-15 18:45:33 +02:00
Deepesh Garg
560483eb98 Merge pull request #26946 from GangaManoj/property-enable-discount-accounting
fix: Make enable_discount _accounting a class property
2021-08-14 18:06:17 +05:30
Ankush Menat
6aed9e26ac fix: unknown attribute "string_type" (#26947) 2021-08-14 10:45:43 +05:30
GangaManoj
20a5795d67 fix: Make enable_discount_accounting a class property 2021-08-13 19:23:57 +05:30
Frappe PR Bot
434692ad34 fix: Copy previous balance dict object instead of assigning (#26942) (#26944)
- Due to plain assignment, dict mutation gave wrong monthly values

(cherry picked from commit fe2a34f171)

Co-authored-by: Marica <maricadsouza221197@gmail.com>
2021-08-13 10:26:26 +00:00
marination
34df274bf2 fix: Error state and passing args for product listing
- Show error state in case of unexpected errors in query engine
- Pass args appropriately from `view.js`
- Use args correctly in `api.py`
- Error handling in `api.py` if query engine raises error
- Instantiated product data engine tests
- Fix dotted path for search api call in `search.js`
2021-08-13 14:23:52 +05:30
Frappe PR Bot
7881536e09 ci: ignore js files in unittests (#26937)
* ci: ignore js files in unittests (#26934)

* ci: ignore js files in unittests

- Avoid running python unittests on PRs that ONLY change JS files.

* ci: ignore md files in test workflows

(cherry picked from commit 8a6b82b196)

# Conflicts:
#	.github/workflows/server-tests.yml

* fix: resolve conflicts

Co-authored-by: Ankush Menat <ankush@iwebnotes.com>
2021-08-13 07:59:48 +00:00
Frappe PR Bot
cb583a349f fix: show proper currency symbol in taxes and charges table (#26827) (#26935)
Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
(cherry picked from commit 587d2db6a9)

Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-08-13 12:43:02 +05:30
Frappe PR Bot
a2a5800b23 fix: Deferred Revenue Section should be collapsible only if its not enabled (#26930)
* fix: Deferred Revenue Section should be collapsible only if its not enabled (#26928)

(cherry picked from commit 1de4c01942)

# Conflicts:
#	erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json
#	erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json

* fix: conflicts

* fix: conflicts

* fix: conflicts

* fix: conflicts

* fix: conflicts

Co-authored-by: Afshan <33727827+AfshanKhan@users.noreply.github.com>
2021-08-13 10:58:43 +05:30
Deepesh Garg
ffb174c489 fix: Grammatical error in comments 2021-08-13 10:55:13 +05:30
Suraj Shetty
adfa11d449 fix: Nest .level class style under .hierarchy class (#26905)
fix: Nest `.level` class style under `.hierarchy` class
2021-08-12 21:12:52 +05:30
Frappe PR Bot
9209c1f91a fix: from_warehouse getting set to None (#26920) (#26927)
(cherry picked from commit b8658d003f)

Co-authored-by: Noah Jacob <noahjacobkurian@gmail.com>
2021-08-12 14:54:08 +00:00
Marica
2416634385 Merge branch 'version-13-hotfix' into e-commerce-refactor 2021-08-12 19:03:44 +05:30
marination
1fec5bbdb6 chore: Re-organise files,remove T&C modal in cart
- Moved product query and filters engine to `product_data_engine` folder
- Moved product grid, list, search, view to `product_ui` folder
- Renamed `website_item_indexing.py` to `redisearch.py`
- Render Terms and Conditions server side along with the rest of the Shopping cart. Don’t make another db call
- Style changes to terms and conditions
- Deleted unused `cart_terms.html`
- Removed print statements
2021-08-12 19:01:10 +05:30
Frappe PR Bot
262c1823a5 fix: ZeroDivisionError on creating e-invoice for credit note (#26919) 2021-08-12 17:11:55 +05:30
Marica
703b081172 fix: Stock Analytics Report must consider warehouse during calculation (#26908)
* fix: Stock Analytics Report must consider warehouse during calculation

* fix: Brand filter in Stock Analytics
2021-08-12 10:31:01 +05:30
Frappe PR Bot
f3ae956eae perf: various minor perf fixes for ledger postings (#26775) (#26896)
* perf: only validate if voucher is journal entry

* perf: optimize merge GLE

- Order fields such that comparison will fail faster
- Break out of loops if not matched

* perf: don't try to match SLE if count mismatch

* refactor: simplify initialize_previous_data

* perf: use cache for fetching valuation_method

These are set only once fields

* refactor: simplify get_future_stock_vouchers

* refactor: simplify get_voucherwise_gl_entries

* perf: fetch only required fields for GL comparison

`select *` fetches all fields, output of this function is only used for
comparing.

* perf: reorder conditions in PL cost center check

* perf: reduce query while validating new gle

* perf: use cache for validating warehouse props

These properties don't change often, no need to query everytime.

* perf: use cached stock settings to validate SLE

* docs: update misleading docstring

Co-authored-by: Marica <maricadsouza221197@gmail.com>
(cherry picked from commit 9152715f90)

Co-authored-by: Ankush <ankush@iwebnotes.com>
2021-08-11 12:18:58 +05:30
Deepesh Garg
6691d2ca54 fix: Do not update settings for test 2021-08-11 11:36:49 +05:30
Rucha Mahabal
fd325a123c fix(style): apply svg container margin only in desktop view (#26894) 2021-08-10 23:49:56 +05:30
Deepesh Garg
a16ab92e00 test: Add test case for payment entry unlink 2021-08-10 22:21:52 +05:30
Deepesh Garg
cf9734f98a test: Update exchange rate in test cases 2021-08-10 22:21:28 +05:30
Deepesh Garg
42b340cc66 fix: Only do specific validations on reference unlink 2021-08-10 14:52:24 +05:30
Deepesh Garg
c26f95e3b2 fix: Validation for receivingfrom customer against negative outstanding 2021-08-10 14:04:31 +05:30
marination
e3422f4ba8 chore: debug travis 2021-08-10 12:49:32 +05:30
18alantom
0992b2eeef test: check manufacture completion qty in se and wo 2021-08-10 12:23:19 +05:30
Marica
1854581d33 Merge branch 'version-13-hotfix' into e-commerce-refactor 2021-08-10 12:11:31 +05:30
marination
480dd8b056 test: Recommendations, Reviews and Wishlist
- Tests for verified and unverified item reviewers
- Test for recommended items and their prices
- Test for adding removing items from Wishlist
- Bug: Wishlist deletes all entries of an item code irrespective of user
- Get Item reviews only if enabled
- Removed price fields from Wishlist Item and made fields read only
- Removed unused price stored as data on Wishlist buttons
- Customer Reviews page checks if reviews are enabled else shows No Reviews
- Moved price stock fetching in Wishlist in separate function
- Made fields read only in Item Review
2021-08-10 11:31:09 +05:30
Deepesh Garg
8da3a5cdd4 Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into payment_entry_validations_and_trigger 2021-08-09 17:38:03 +05:30
18alantom
ce44e11caf refactor: validation error message formatting 2021-08-09 17:37:17 +05:30
marination
d477b99c1d Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into e-commerce-refactor 2021-08-09 13:41:45 +05:30
marination
20bc65c97b test: Website Item (Item full page)
- Tests for website item. Desk tests and portal tests
- Allow guests on method `get_offer_details`
- Fetch stock details only if `show_stock_availability` is enabled
- Validation for duplicate web items on item merge
- Separate method for `validate_properties_before_merge`
- Common error title and exception `DataValidationError` for merge validations on Item
2021-08-09 13:25:13 +05:30
barredterra
c6c2773e02 refactor: def instead of lambda 2021-08-03 11:22:42 +02:00
barredterra
950521299a Merge branch 'version-13-hotfix' into datev_more_info 2021-08-03 10:47:57 +02:00
barredterra
c82611aa62 feat: sort timesheets by start time 2021-08-02 23:19:57 +02:00
barredterra
1110f88e5a feat: refactor and enhance sales invoice timesheet 2021-08-02 23:06:37 +02:00
barredterra
b57521a337 feat: add total_billing_hours to Sales Invoice 2021-08-02 18:37:45 +02:00
Anupam Kumar
c2b5b0edee fix: bank remittance report issue (#26398) 2021-08-02 10:51:21 +05:30
Deepesh Garg
75f23aed1c fix: Multiple fixes in payment entry 2021-08-01 17:48:50 +05:30
Deepesh Garg
c02e42ff84 fix: Multiple fixes in payment entry 2021-07-29 19:46:17 +05:30
barredterra
a21f76f2a1 feat: add voucher-specific data to datev export 2021-07-21 20:08:20 +02:00
Alan
37a886a8a9 Merge branch 'version-13-hotfix' into feat-bom-process-loss 2021-07-21 17:13:36 +05:30
marination
7ef2af203f test: Website Item basic test & removed product configurator tests
- Sider fixes: missing semicolons
- Added two basic tests for Website Item
- Commented Product Configurator tests, needs to re-written fully
2021-07-19 13:27:17 +05:30
marination
ece4f391ac fix: Remove Website Item from Item Dashboard
- Install breaks on CI, will add later
2021-07-19 13:26:08 +05:30
Marica
ea96afca62 Merge branch 'version-13-hotfix' into e-commerce-refactor 2021-07-16 15:17:37 +05:30
marination
401cbc01a9 Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into e-commerce-refactor 2021-07-15 21:03:01 +05:30
marination
bb60523fa7 feat: Cart minor UI/UX Refresh
- Added Setting to show or hide price if checkout is disabled
- Show Web Item name in cart instead of Desk Item name
- Cart minor UI Refresh: added images in cart
- Cart minor UI Refresh: repositioned remove button and redesigned
- Cart minor UI Refresh: Payment Summary section
- Cart minor UI Refresh: Disable input on free item
- Cart minor UI Refresh: Add address button in cards
- New file for cart payment summary UI with coupon code (old)
2021-07-15 20:09:02 +05:30
Deepesh Garg
dfadae6a92 fix: Report and JSON generation for Advances received 2021-07-15 15:36:54 +05:30
marination
fed3b575eb chore: Wishlist UI (minor)
- Minor wishlist UI refresh, actions on hover, new icon
- Increase max length of wishlist card title
- Dont fetch outdated price in wishlist
- Translate 'out of stock'
- Use ORM
2021-07-14 01:36:50 +05:30
marination
f14596a8f3 feat: Recommended Items and Item full page refresh
- Added Optional Recommended Items
- Item Full Page minor UI Refresh
- Floating wishlist button in item full page
- Reviews section UI Refresh
2021-07-13 23:46:24 +05:30
Noah Jacob
449c58d809 refactor: suggested changes 2021-07-13 11:12:33 +05:30
Noah Jacob
a1a4e8d616 fix: Sider 2021-07-13 11:12:33 +05:30
Noah Jacob
e60a349432 test: updated test cases 2021-07-13 11:12:33 +05:30
Noah Jacob
872cd1cac8 test: test cases for fetching customer group details 2021-07-13 11:12:33 +05:30
Noah Jacob
d160e73c03 test: test case for fetching supplier group details 2021-07-13 11:12:33 +05:30
Noah Jacob
905aebc310 feat: details fetched from customer group in customer 2021-07-13 11:12:33 +05:30
Noah Jacob
47c2317b1a feat: details fetched from supplier group in supplier 2021-07-13 11:12:33 +05:30
marination
cf88b517c8 chore: UI refresh for grid/list view and search
- enhanced UI for grid/list view, actions visible on hover only
- enhanced search UI
- Added indicator to show if item is in cart
- Moved search with view togglers
2021-07-12 03:28:33 +05:30
marination
9920747a26 fix: Discount Filtes & Filter behaviour
- Client: Maintain state where listing is re-rendered due filter trigger
- Client: Handle binding/restoring discount filters separately on filter trigger
- Client: Placeholder Image for search results
- If any filter is checked, query and display items from page 1
- Query Engine: Smaller functions and handle discount filter properly
- Added index on item group and brand for Website item
2021-07-08 19:34:07 +05:30
marination
f39c6db08a fix: Rename Wishlist Item, Use Website Item Name in Wishlist Cards
- Renamed Wishlist Items to Wishlist Item
- Use Website Item Name in Wishlist
- Add Website Item Name field in Wishlist Item
- Remove accidental extra `font-size` attribute
2021-07-08 13:58:56 +05:30
marination
c844f3a612 fix: Sync Website Items on Item Change, Short Website Description
- Added Short Description in Website Item for List View
- Update Website Item on Item info change
- Un-publish Web Item if Item is disabled
- Removed unnecessary dependency on Item from query engine
- Rearranged item detail fields in Website Item
- Added Link to Website Item on Item Dashboard
2021-07-08 12:52:57 +05:30
marination
2107883301 Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into e-commerce-refactor 2021-07-08 11:12:14 +05:30
marination
66a7924d97 feat: Guest Display Settings
- Re-arranged Settings checkboxes
- Deleted `show_availability_status` from E Commerce Settings
- Added `Hide Price for Guest` functionality
- Added Custom Redirection for Guest Actions in  E Commerce Settings
- Minor cleanups
2021-07-08 10:57:01 +05:30
marination
bcaea4932d fix: Filters state, Search input clearing, Paging buttons
- Fixed repetitive calls on checking filter checkbox
- Query count of items after offset for accurate Paging button display
- Order items by ranking in query
- Search results get empty on clearing input
2021-07-07 16:30:56 +05:30
Deepesh Garg
cc57be51be Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into gstr_1_cdnr_unregistered_json 2021-07-07 10:17:59 +05:30
Deepesh Garg
05b93063aa Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into gstr_1_cdnr_unregistered_json 2021-07-06 11:27:18 +05:30
marination
1701125fca chore: Cleanup Query Engine and Product query API
- Resolved merge conflicts in item_group.py
- Separate api.py file for product listing backend api
- Brought back ORM in query engine, handled missing cases (website item groups, etc)
- Return results from API in a descriptive manner, helps keep sanity in JS
- On toggling views store view preference in localStorage
2021-06-29 11:22:27 +05:30
marination
db792c307f Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into e-commerce-refactor 2021-06-28 16:50:08 +05:30
18alantom
7ed8c8c11f fix: sider 2021-06-25 15:48:28 +05:30
18alantom
2d13d5ec31 Merge branch 'feat-bom-process-loss' of https://github.com/18alantom/erpnext into feat-bom-process-loss 2021-06-25 15:15:57 +05:30
18alantom
e81a7cf44e refactor: polyfill ?? 2021-06-25 15:14:55 +05:30
Alan
edb38ad4c7 Merge branch 'version-13-hotfix' into feat-bom-process-loss 2021-06-25 14:51:04 +05:30
18alantom
69d5e2a6f8 fix: sider 2021-06-25 14:46:08 +05:30
18alantom
e957c026bb fix: add more validations, remove source wh req for pl item 2021-06-25 14:21:12 +05:30
18alantom
f34f0a40c4 test: add bom tests for process loss val, add se test for qty calc 2021-06-25 14:20:22 +05:30
18alantom
697a8bce7f refactor: shift auto entry of is process loss check, update validations 2021-06-24 15:05:52 +05:30
18alantom
8032095d81 fix: add warehouse and unset is scrap for process loss items 2021-06-23 15:30:48 +05:30
18alantom
025f4b21de feat: add is process loss autoset and validation 2021-06-23 15:06:00 +05:30
18alantom
867ed3a1e4 feat: add provision for process loss in manufac 2021-06-22 16:53:35 +05:30
Deepesh Garg
2f9f562046 feat: CDNR Unreg json generation 2021-06-20 20:18:23 +05:30
marination
d6a32ea832 fix: Missing Image in Item Page and Variants in Cart
- Added fallback for missing image in item page
- Explore button font
- Incorrectly fetching route from Item master, use Website Item instead
2021-06-09 00:11:48 +05:30
marination
4ba78e73dd fix: Checkbox sizes and paging buttons
- Show paging buttons at all times and enable/disable buttons
- Define checkbox and radio button  sizes within erpnext
- Wishlist cards even height
2021-06-08 22:35:36 +05:30
marination
cdcb18bd16 fix: Font size, empty image styles, and minor cleanup
- some frappe css font variables weren't loading, remove dependency
- fixed fallback display for missing images in views
- py code cleanup (minor)
2021-06-08 19:40:26 +05:30
Marica
791e244b4f Merge branch 'version-13-hotfix' into e-commerce-refactor 2021-06-08 15:00:59 +05:30
marination
bc3ab093b8 fix: Mixin import issue, search error handling, shop-by-category slideshow 2021-06-08 14:53:45 +05:30
marination
5f3e4f0e82 fix: Search UI open/close and Empty product search results 2021-06-02 18:32:35 +05:30
marination
62faa5ba1f fix: Sider and Patch tests 2021-06-02 13:24:06 +05:30
marination
e000be5145 Merge branch 'version-13-hotfix' of https://github.com/frappe/erpnext into e-commerce-refactor 2021-06-01 12:49:55 +05:30
marination
acfdc6f22e feat: Search UI
- Search UI with dropdown results
- Client class to handle Product Search actions and results
- Integrated Search bar into all-products and item group pages
- Run db search without redisearch
- Cleanup: [Search] change decorator names and variables
- Sider fixes
2021-06-01 12:46:35 +05:30
Hussain Nagaria
4f73deeb78 Merge branch 'search-with-redisearch' into e-commerce-refactor 2021-05-28 15:01:00 +05:30
Hussain Nagaria
fd3ce1b573 fix: Documentation link and open in new tab 2021-05-28 07:10:24 +05:30
Hussain Nagaria
8a25523ad7 chore: Redisearch warning in search settings 2021-05-28 06:36:16 +05:30
Hussain Nagaria
6799eb98db feat: Add fallback when redisearch not loaded 2021-05-28 06:25:49 +05:30
Marica
ea4ec3bc7c Merge branch 'version-13-hotfix' into e-commerce-refactor 2021-05-27 19:03:55 +05:30
marination
0712cafa0d chore: Shopping Cart styles and cleanup shallow
- Added remove button to cart item rows
- Freeze on change in Shopping Cart (UX)
- Fixed cart items and taxes/totals alignment issues
- Made Cart responsive
- Added free item indicator
- Fixed item group nested routing issue
- Sales Order is populated with right source warehouse
2021-05-27 18:53:11 +05:30
Hussain Nagaria
50d7989e50 chore: Redisearch module load tracking 2021-05-26 22:43:22 +05:30
Hussain Nagaria
9499db8cd9 feat: Add decorator for redisearch 2021-05-26 20:26:34 +05:30
marination
bba0bc874a fix: Discount Filters and Web templates
- Fixed discount filters (didn’t work after js render change)
- Fix Item Card Group template height and style
- Add placeholder to missing images in Product Category Cards template
- Code cleanup
2021-05-25 01:35:22 +05:30
marination
82cc7f1027 fix: Items Query, Sub categories, Review Button
- Include Item Variant table in query only if attributes are involved
- Render sub categories of they exist, even without items
- 'Write a Review' provision only if user is a customer
2021-05-20 01:45:20 +05:30
marination
fe47761f20 fix: Move get_product_filtrs_data to website item file 2021-05-19 23:59:09 +05:30
marination
2bc68f3f28 fix: Empty states and miscellanous fixes
- Added Wishlist and Product Listing empty states
- Hide ‘Write Review’ button f user is not Customer
- Fixed grid view title (missing arg)
- Render empty state if no items form server side
- Removed unused function
- Guest user redirected to login on clicking Wishlist button
- Fixed ‘Notes’ field clearing issue
2021-05-19 21:17:47 +05:30
marination
681ada9aaf fix: Patch fix for fresh installs
- minor sider fix
- patch fix for fresh installs
2021-05-18 21:38:36 +05:30
marination
a0bbe7fea7 fix: Sider and Patches
- Sider fixes
- Deleted patches that worked as per old schema
- Cleared instances of web fields linked to Item master
2021-05-17 21:27:42 +05:30
marination
6a802f354b feat: Product View toggling
- Added fully functional list and grid view toggling
- Added ProductGrid and ProductList controllers
- Moved html snippets, rendered via JS now
- Item Group page also rendered via common controller
- Paging section rendered via JS
- Minor style changes
2021-05-17 20:44:41 +05:30
Marica
321b8afbff Merge branch 'version-13-hotfix' into e-commerce-refactor 2021-05-13 14:28:45 +05:30
marination
a975f9915b feat: (wip) Toggle Views
- Auto Height on Cards
- Title with ellipses on length exceed
- Changed namepaces
- Moved product card rendering to JS
- Added Image and List View Toggling buttons
- Kept basic filters rendering just as before
2021-05-13 14:26:25 +05:30
marination
163a62476e fix: Show Offers section only if offers exist 2021-05-13 14:26:06 +05:30
marination
acb6ce8f95 feat: Offer Display
- Added offers section in website item
- Added more roles to website item
- Fixed attachment limit issue in website item
- Created Website Offer child doctype
- Added offers listing in Item full page view
- style fixes
2021-05-13 14:25:40 +05:30
Hussain Nagaria
7a278208c8 chores: Add function params and remove unused imports 2021-05-11 13:00:41 +05:30
Hussain Nagaria
1ebb1b822c feat: Show Recent Searches 2021-05-05 16:04:22 +05:30
Hussain Nagaria
b52d283739 feat: Show brand line in search results 2021-05-05 13:47:43 +05:30
Hussain Nagaria
4356ffbfe8 feat: Add brand line display setting 2021-05-05 13:09:46 +05:30
Hussain Nagaria
eb955c7e99 chore: Add placeholder image 2021-05-04 11:08:45 +05:30
Hussain Nagaria
28c2f5d832 chore: Add query clean-up 2021-05-03 05:47:38 +05:30
Hussain Nagaria
a6deace37c refactor: Use global redis connection 2021-04-29 20:48:27 +05:30
Hussain Nagaria
58d08ee307 chore: Make it a little beautiful 2021-04-29 20:01:31 +05:30
Hussain Nagaria
d22951b014 feat: Add Category autocomplete with config in settings 2021-04-26 11:15:20 +05:30
Hussain Nagaria
c376b67725 feat: Make search index fields configurable
- Move indexing logic to separate file
- Add more validation logic for 'search index fields' field
2021-04-26 07:02:52 +05:30
Hussain Nagaria
fdcfa41a6f feat: Add search fields field 2021-04-23 20:00:47 +05:30
Hussain Nagaria
4a0136b524 feat: Basic Query + Autocomplete 2021-04-22 14:21:29 +05:30
Hussain Nagaria
cc402a5d0c feat: Add basic autocomplete using redisearch 2021-04-21 13:52:23 +05:30
marination
b2e607bb55 chore: Sider and Semgrep 2021-04-21 13:08:05 +05:30
marination
ed0aabbb19 Merge branch 'develop' of https://github.com/frappe/erpnext into e-commerce-refactor 2021-04-21 11:55:45 +05:30
marination
8bc90a65e4 feat: Discount Filters
- Discount filters in filters section
- Code cleanup
2021-04-20 21:54:52 +05:30
marination
94d0149756 Merge branch 'develop' of https://github.com/frappe/erpnext into e-commerce-refactor 2021-04-19 13:06:16 +05:30
marination
c2bd7e504d fix: Item schema modified date update
- Modified date changed due to merge conflict
- Changed it to a later date to make sure Item migrates correctly
2021-04-13 16:57:35 +05:30
marination
f10a08ad6b feat: Slashed Prices and Discount display
- Registered mrp and price after discounts
- slashed price with discount in listing, item page and wishlist
- removed redundant imports
- renamed method to `get_web_item_qty_in_stock` to get Website Item stock
- adjusted styles for resizing
- made add to cart button full width on cards
2021-04-13 00:39:26 +05:30
marination
6d85e821c1 fix: Sider and Tests 2021-04-08 17:23:39 +05:30
marination
aff53b762e Merge branch 'develop' of https://github.com/frappe/erpnext into e-commerce-refactor 2021-04-08 00:06:05 +05:30
marination
be68f75348 feat: Customer Ratings & Reviews Full Page
- Created macros for repetitive snippets
- Created Customer Reviews full page
- View more button to reveal 10 more reviews at a time
- Common function to get reviews with start and end
2021-04-07 23:49:04 +05:30
marination
470ec148a4 feat: (wip) Ratings and Reviews
- Added Ratings and Reviews section in Item full page view
- Added provision to write a review with popup
- Created Item Review Doctype to store User-Item unique reviews
- Added privision to enable/disable wishlist and reviews in e commerce settings
- Hide cart and wishlist actions everywhere (even navbar) depending on settings
- Moved some more inline css to scss
- Small logic fixes
TODO: Reviews full page view with paging
2021-03-25 11:52:50 +05:30
marination
fe6e77791b fix: Remove unnecessary css variable and hover state
- Removed wish-red variable
- Removed hover state from remove wishlist item button in card
- Removed inline css from wishlist item card
2021-03-22 16:46:51 +05:30
marination
f42716f348 feat: Product Details Tabbed Section and Add to Wishlist in Item Full Page
- Add to Wishlist button next to add to cart
- Beautified Product Specifications table section
- Product Specifications can be optionally in a tabbed section with custom tabs added
- Removed hard coded gray bg to allow custom theme overwrites
- Fixed resizing issues in Item Full Page view
- Cleaned up inline styles and ported to scss
2021-03-22 16:17:59 +05:30
Marica
cf3f2eadfb Merge branch 'develop' into e-commerce-refactor 2021-03-16 16:00:09 +05:30
marination
075ce7f01a fix: Sider 2021-03-16 11:33:58 +05:30
marination
0b3921e3cf feat: Wishlist Page
- Navbar icon with badge count for wishlist
- Wishlist page with cards
- Cards can be moved to cart or removed in a click
- Separated all wishlist related methods into wishlist.js
- Made a common js method(util) to add/remove wishlist items
- Bug fix: Make sure items are removed from session user's wishlist
2021-03-16 00:05:53 +05:30
marination
0783e3deac feat: Wishlist from card actions
- Add remove items from wishlist
- Wishlist icon at nav bar
- Animate wishlist icon in card and navbar
- Remember wished state after refresh as well
2021-03-14 17:31:34 +05:30
Marica
1c8ee168fb Merge branch 'develop' into e-commerce-refactor 2021-03-11 21:43:45 +05:30
marination
fc40b57c21 feat: Animate Add to Cart List interactions (UX)
- Increased qty in cart on clicking add to cart for existing item
- Simplified macro arguments
- Navbar cart icon animation
- Explore button for template item in card
- Add to cart button animation
2021-03-11 21:44:01 +05:30
marination
e13f7622ba feat: Card Actions and Wishlist
- Rough UI for card actions
- Wishlist doctype
- Indicators on card based on stock availability
2021-03-11 11:42:10 +05:30
marination
aa989a95e3 feat: Shop by Category
- Added Shop by Category Page
- Tabbed sections for item fields in Shop by Category Page
- Added Shop by Category Section in E commerce Settings
- Nested Navigation & Breadcrumbs in Item group pages
- Added scrollable & clickable Sub categories in Item Group page
- Made breadcrumbs slightly dynamic in Item Page
- Added image to Brand doctype
2021-03-08 10:28:02 +05:30
marination
31d97b43e6 chore: Removed Shopping Cart Module
- Moved all files and web templates from Shopping Cart to E-commerce module
- Made Shopping Cart module obsolete
- Moved select E-commerce related files from Portal to E-commerce module
- Minor cleanups
- Fixed Shopping Cart and Product Configurator tests
2021-03-08 10:28:02 +05:30
marination
d93e3a32da chore: Patches for Website Item
- Patch to make website item from item
- Patch to move Products and Shopping Cart Settings into E Commerce Settings
- Patch to move products in Homepage from Item to Website Item
- Minor cleanup, replacing/removing references to Item website fields (obsolete)
2021-03-08 10:28:02 +05:30
marination
333d08f459 fix: Hide Attribute filters if 'Hide Variants' is enabled in E Commerce Settings
- Hide Attribute filters if 'Hide Variants' is enabled in E Commerce Settings
- Consider 'Hide Variants' in ProductQuery Engine
- Added docstrings
- Remove `get_e_commerce_settings`, redundant
2021-03-08 10:26:05 +05:30
marination
2a3f5da6af fix: Sider and indexing (minor) 2021-03-08 10:26:05 +05:30
marination
862a924cd2 chore: Removing Item's Website section & references
- Removed old onboarding slide json and `create_onboarding_docs` methods
- Removed website sections from Item master
- Removed references to item website fields
- Shifted Item doctype website methods to Website Item
- Removed WebsiteGenerator from Item doctype
- Website Items in Homepage Products section
- Removed redundant code from item_group.py
- Fix: Item field filters won’t appear in website
2021-03-08 10:26:05 +05:30
marination
675e2af3ea chore: Drive E-commerce via Website Item
- Removed Shopping Cart Settings
- Portal fully driven via E Commerce Settings
- All Item listing querying will happen via ProductQuery engine only
- Product Listing via Website Items
- removed redundant code
- Moved all website logic from Item to Website Item
2021-03-08 10:26:05 +05:30
marination
978e8aa31c feat: E-commerce Refactor
- Created "Website Item" to handle website related information
- Publishing Item new flow
- Created "E Commerce Settings"
- Removed Products Settings
2021-03-08 10:24:45 +05:30
6426 changed files with 1052332 additions and 2244413 deletions

View File

@@ -9,13 +9,6 @@ trim_trailing_whitespace = true
charset = utf-8
# python, js indentation settings
[{*.py,*.js,*.vue,*.css,*.scss,*.html}]
[{*.py,*.js}]
indent_style = tab
indent_size = 4
max_line_length = 110
# JSON files - mostly doctype schema files
[{*.json}]
insert_final_newline = false
indent_style = space
indent_size = 1

View File

@@ -2,32 +2,65 @@
"env": {
"browser": true,
"node": true,
"es2022": true
"es6": true
},
"parserOptions": {
"ecmaVersion": 9,
"sourceType": "module"
},
"extends": "eslint:recommended",
"rules": {
"indent": "off",
"brace-style": "off",
"no-mixed-spaces-and-tabs": "off",
"no-useless-escape": "off",
"space-unary-ops": ["error", { "words": true }],
"linebreak-style": "off",
"quotes": ["off"],
"semi": "off",
"camelcase": "off",
"no-unused-vars": "off",
"no-console": ["warn"],
"no-extra-boolean-cast": ["off"],
"no-control-regex": ["off"]
"indent": [
"error",
"tab",
{ "SwitchCase": 1 }
],
"brace-style": [
"error",
"1tbs"
],
"space-unary-ops": [
"error",
{ "words": true }
],
"linebreak-style": [
"error",
"unix"
],
"quotes": [
"off"
],
"semi": [
"warn",
"always"
],
"camelcase": [
"off"
],
"no-unused-vars": [
"warn"
],
"no-redeclare": [
"warn"
],
"no-console": [
"warn"
],
"no-extra-boolean-cast": [
"off"
],
"no-control-regex": [
"off"
],
"space-before-blocks": "warn",
"keyword-spacing": "warn",
"comma-spacing": "warn",
"key-spacing": "warn"
},
"root": true,
"globals": {
"frappe": true,
"Vue": true,
"SetVueGlobals": true,
"erpnext": true,
"hub": true,
"$": true,
@@ -64,10 +97,8 @@
"is_null": true,
"in_list": true,
"has_common": true,
"posthog": true,
"has_words": true,
"validate_email": true,
"open_web_template_values_editor": true,
"get_number_format": true,
"format_number": true,
"format_currency": true,
@@ -123,8 +154,8 @@
"before": true,
"beforeEach": true,
"onScan": true,
"html2canvas": true,
"extend_cscript": true,
"localforage": true,
"Plaid": true
"localforage": true
}
}

View File

@@ -29,9 +29,6 @@ ignore =
B950,
W191,
E124, # closing bracket, irritating while writing QB code
E131, # continuation line unaligned for hanging indent
E123, # closing bracket does not match indentation of opening bracket's line
E101, # ensured by use of black
max-line-length = 200
exclude=.github/helper/semgrep_rules

View File

@@ -8,40 +8,12 @@
#
# $ git config blame.ignoreRevsFile .git-blame-ignore-revs
# Replace use of Class.extend with native JS class
1fe891b287a1b3f225d29ee3d07e7b1824aba9e7
# This commit just changes spaces to tabs for indentation in some files
5f473611bd6ed57703716244a054d3fb5ba9cd23
# Whitespace fix throughout codebase
4551d7d6029b6f587f6c99d4f8df5519241c6a86
b147b85e6ac19a9220cd1e2958a6ebd99373283a
# Whitespace trimming throughout codebase
9bb69e711a5da43aaf8c8ecb5601aeffd89dbe5a
f0bcb753fb7ebbb64bb0d6906d431d002f0f7d8f
# sort and cleanup imports
915b34391c2066dfc83e60a5813c5a877cebe7ac
# removing six compatibility layer
8fe5feb6a4372bf5f2dfaf65fca41bbcc25c8ce7
# bulk format python code with black
494bd9ef78313436f0424b918f200dab8fc7c20b
# bulk format python code with black
baec607ff5905b1c67531096a9cf50ec7ff00a5d
# bulk refactor with sourcery
eb9ee3f79b94e594fc6dfa4f6514580e125eee8c
# js formatting
ec74a5e56617bbd76ac402451468fd4668af543d
# ruff formatting
a308792ee7fda18a681e9181f4fd00b36385bc23
# noisy typing refactoring of get_item_details
7b7211ac79c248a79ba8a999ff34e734d874c0ae
d827ed21adc7b36047e247cbb0dc6388d048a7f9
# `frappe.flags.in_test` => `frappe.in_test`
7a482a69985c952de0e8193c9d4e086aee65ee6d
# imports cleanup
4b2be2999f2203493b49bf74c5b440d49e38b5e3

View File

@@ -23,7 +23,7 @@ If your issue is not clear or does not meet the guidelines, then it will be clos
1. **Steps to Reproduce:** The bug report must have a list of steps needed to reproduce a bug. If we cannot reproduce it, then we cannot solve it.
1. **Version Number:** Please add the version number in your report. Often a bug is fixed in the latest version
1. **Clear Title:** Add a clear subject to your bug report like "Unable to submit Purchase Order without Basic Rate" instead of just "Cannot Submit"
1. **Screenshots:** Screenshots are a great way of communicating issues. Try adding annotations or using LiceCAP to take a screencast in `gif`.
1. **Screenshots:** Screenshots are a great way of communicating the issues. Try adding annotations or using LiceCAP to take a screencast in `gif`.
### Feature Request Guidelines

47
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,47 @@
---
name: Bug report
about: Report a bug encountered while using ERPNext
labels: bug
---
<!--
Welcome to ERPNext issue tracker! Before creating an issue, please heed the following:
1. This tracker should only be used to report bugs and request features / enhancements to ERPNext
- For questions and general support, checkout the manual https://erpnext.com/docs/user/manual/en or use https://discuss.erpnext.com
- For documentation issues, refer to https://github.com/frappe/erpnext_com
2. Use the search function before creating a new issue. Duplicates will be closed and directed to
the original discussion.
3. When making a bug report, make sure you provide all required information. The easier it is for
maintainers to reproduce, the faster it'll be fixed.
4. If you think you know what the reason for the bug is, share it with us. Maybe put in a PR 😉
-->
## Description of the issue
## Context information (for bug reports)
**Output of `bench version`**
```
(paste here)
```
## Steps to reproduce the issue
1.
2.
3.
### Observed result
### Expected result
### Stacktrace / full error message
```
(paste here)
```
## Additional information
OS version / distribution, `ERPNext` install method, etc.

View File

@@ -1,89 +0,0 @@
name: Bug Report
description: Report a bug encountered while using ERPNext
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Welcome to ERPNext issue tracker! Before creating an issue, please heed the following:
1. This tracker should only be used to report bugs and request features / enhancements to ERPNext
- For questions and general support, checkout the [user manual](https://docs.erpnext.com/) or use [forum](https://discuss.erpnext.com)
- For documentation issues, propose edit on [documentation site](https://docs.erpnext.com/) directly.
2. When making a bug report, make sure you provide all required information. The easier it is for
maintainers to reproduce, the faster it'll be fixed.
3. If you think you know what the reason for the bug is, share it with us. Maybe put in a PR 😉
- type: textarea
id: bug-info
attributes:
label: Information about bug
description: Also tell us, what did you expect to happen?
placeholder: Please provide as much information as possible.
validations:
required: true
- type: dropdown
id: module
attributes:
label: Module
description: Select affected module of ERPNext.
multiple: true
options:
- accounts
- stock
- buying
- selling
- ecommerce
- manufacturing
- HR
- projects
- support
- CRM
- assets
- integrations
- quality
- regional
- portal
- agriculture
- education
- non-profit
- other
validations:
required: true
- type: textarea
id: exact-version
attributes:
label: Version
description: Share exact version number of Frappe and ERPNext you are using.
placeholder: |
Frappe version -
ERPNext Verion -
validations:
required: true
- type: dropdown
id: install-method
attributes:
label: Installation method
options:
- docker
- easy-install
- manual install
- FrappeCloud
validations:
required: false
- type: textarea
id: logs
attributes:
label: Relevant log output / Stack trace / Full Error Message.
description: Please copy and paste any relevant log output. This will be automatically formatted.
render: shell
- type: markdown
attributes:
value: |
By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/frappe/erpnext/blob/develop/CODE_OF_CONDUCT.md)

View File

@@ -1,10 +1,7 @@
---
name: Feature request
about: Suggest an idea to improve ERPNext
title: ''
labels: feature-request
assignees: ''
---
<!--
@@ -12,18 +9,10 @@ Welcome to ERPNext issue tracker! Before creating an issue, please heed the foll
1. This tracker should only be used to report bugs and request features / enhancements to ERPNext
- For questions and general support, checkout the manual https://erpnext.com/docs/user/manual/en or use https://discuss.erpnext.com
- For documentation issues, refer to https://github.com/frappe/erpnext_com
2. Use the search function before creating a new issue. Duplicates will be closed and directed to
the original discussion.
3. When making a feature request, make sure to be as verbose as possible. The better you convey your message, the greater the drive to make it happen.
Please keep in mind that we get many many requests and we can't possibly work on all of them, we prioritize development based on the goals of the product and organization. Feature requests are still welcome as it helps us in research when we do decide to work on the requested feature.
If you're in urgent need to a feature, please try the following channels to get paid developments done quickly:
1. Certified ERPNext partners: https://erpnext.com/partners
2. Developer community on ERPNext forums: https://discuss.erpnext.com/c/developers/5
3. Telegram group for ERPNext/Frappe development work: https://t.me/erpnext_opps
3. When making a feature request, make sure to be as verbose as possible. The better you convey your message, the greater the drive to make it happen.
-->
**Is your feature request related to a problem? Please describe.**

View File

@@ -0,0 +1,17 @@
---
name: Question about using ERPNext
about: This is not the appropriate channel
labels: invalid
---
Please post on our forums:
for questions about using `ERPNext`: https://discuss.erpnext.com
for questions about using the `Frappe Framework`: ~~https://discuss.frappe.io~~ => [stackoverflow](https://stackoverflow.com/questions/tagged/frappe) tagged under `frappe`
for questions about using `bench`, probably the best place to start is the [bench repo](https://github.com/frappe/bench)
For documentation issues, use the [ERPNext Documentation](https://erpnext.com/docs/) or [Frappe Framework Documentation](https://frappe.io/docs/user/en) or the [developer cheetsheet](https://github.com/frappe/frappe/wiki/Developer-Cheatsheet)
> **Posts that are not bug reports or feature requests will not be addressed on this issue tracker.**

View File

@@ -66,8 +66,6 @@ ignore =
F841,
E713,
E712,
B023,
B028
max-line-length = 200

View File

@@ -3,63 +3,52 @@ from urllib.parse import urlparse
import requests
WEBSITE_REPOS = [
docs_repos = [
"frappe_docs",
"erpnext_documentation",
"erpnext_com",
"frappe_io",
]
DOCUMENTATION_DOMAINS = [
"docs.erpnext.com",
"docs.frappe.io",
"frappeframework.com",
]
def uri_validator(x):
result = urlparse(x)
return all([result.scheme, result.netloc, result.path])
def is_valid_url(url: str) -> bool:
parts = urlparse(url)
return all((parts.scheme, parts.netloc, parts.path))
def is_documentation_link(word: str) -> bool:
if not word.startswith("http") or not is_valid_url(word):
return False
parsed_url = urlparse(word)
if parsed_url.netloc in DOCUMENTATION_DOMAINS:
return True
if parsed_url.netloc == "github.com":
parts = parsed_url.path.split("/")
if len(parts) == 5 and parts[1] == "frappe" and parts[2] in WEBSITE_REPOS:
return True
return False
def contains_documentation_link(body: str) -> bool:
return any(is_documentation_link(word) for line in body.splitlines() for word in line.split())
def check_pull_request(number: str) -> "tuple[int, str]":
response = requests.get(f"https://api.github.com/repos/frappe/erpnext/pulls/{number}")
if not response.ok:
return 1, "Pull Request Not Found! ⚠️"
payload = response.json()
title = (payload.get("title") or "").lower().strip()
head_sha = (payload.get("head") or {}).get("sha")
body = (payload.get("body") or "").lower()
if not title.startswith("feat") or not head_sha or "no-docs" in body or "backport" in body:
return 0, "Skipping documentation checks... 🏃"
if contains_documentation_link(body):
return 0, "Documentation Link Found. You're Awesome! 🎉"
return 1, "Documentation Link Not Found! ⚠️"
def docs_link_exists(body):
for line in body.splitlines():
for word in line.split():
if word.startswith('http') and uri_validator(word):
parsed_url = urlparse(word)
if parsed_url.netloc == "github.com":
parts = parsed_url.path.split('/')
if len(parts) == 5 and parts[1] == "frappe" and parts[2] in docs_repos:
return True
elif parsed_url.netloc == "docs.erpnext.com":
return True
if __name__ == "__main__":
exit_code, message = check_pull_request(sys.argv[1])
print(message)
sys.exit(exit_code)
pr = sys.argv[1]
response = requests.get("https://api.github.com/repos/frappe/erpnext/pulls/{}".format(pr))
if response.ok:
payload = response.json()
title = (payload.get("title") or "").lower().strip()
head_sha = (payload.get("head") or {}).get("sha")
body = (payload.get("body") or "").lower()
if (title.startswith("feat")
and head_sha
and "no-docs" not in body
and "backport" not in body
):
if docs_link_exists(body):
print("Documentation Link Found. You're Awesome! 🎉")
else:
print("Documentation Link Not Found! ⚠️")
sys.exit(1)
else:
print("Skipping documentation checks... 🏃")

View File

@@ -4,64 +4,30 @@ set -e
cd ~ || exit
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash
sudo apt update
sudo apt remove mysql-server mysql-client
sudo apt install libcups2-dev redis-server mariadb-client libmariadb-dev
pip cache remove mysqlclient
sudo apt-get install redis-server libcups2-dev
pip install frappe-bench
githubbranch=${GITHUB_BASE_REF:-${GITHUB_REF##*/}}
frappeuser=${FRAPPE_USER:-"frappe"}
frappecommitish=${FRAPPE_BRANCH:-$githubbranch}
mkdir frappe
pushd frappe
git init
git remote add origin "https://github.com/${frappeuser}/frappe"
git fetch origin "${frappecommitish}" --depth 1
git checkout FETCH_HEAD
popd
git clone https://github.com/frappe/frappe --branch "${GITHUB_BASE_REF:-${GITHUB_REF##*/}}" --depth 1
bench init --skip-assets --frappe-path ~/frappe --python "$(which python)" frappe-bench
mkdir ~/frappe-bench/sites/test_site
cp -r "${GITHUB_WORKSPACE}/.github/helper/site_config.json" ~/frappe-bench/sites/test_site/
if [ "$DB" == "mariadb" ];then
cp -r "${GITHUB_WORKSPACE}/.github/helper/site_config_mariadb.json" ~/frappe-bench/sites/test_site/site_config.json
else
cp -r "${GITHUB_WORKSPACE}/.github/helper/site_config_postgres.json" ~/frappe-bench/sites/test_site/site_config.json
fi
mysql --host 127.0.0.1 --port 3306 -u root -e "SET GLOBAL character_set_server = 'utf8mb4'"
mysql --host 127.0.0.1 --port 3306 -u root -e "SET GLOBAL collation_server = 'utf8mb4_unicode_ci'"
mysql --host 127.0.0.1 --port 3306 -u root -e "CREATE USER 'test_frappe'@'localhost' IDENTIFIED BY 'test_frappe'"
mysql --host 127.0.0.1 --port 3306 -u root -e "CREATE DATABASE test_frappe"
mysql --host 127.0.0.1 --port 3306 -u root -e "GRANT ALL PRIVILEGES ON \`test_frappe\`.* TO 'test_frappe'@'localhost'"
if [ "$DB" == "mariadb" ];then
mariadb --host 127.0.0.1 --port 3306 -u root -proot -e "SET GLOBAL character_set_server = 'utf8mb4'"
mariadb --host 127.0.0.1 --port 3306 -u root -proot -e "SET GLOBAL collation_server = 'utf8mb4_unicode_ci'"
mariadb --host 127.0.0.1 --port 3306 -u root -proot -e "CREATE USER 'test_frappe'@'localhost' IDENTIFIED BY 'test_frappe'"
mariadb --host 127.0.0.1 --port 3306 -u root -proot -e "CREATE DATABASE test_frappe"
mariadb --host 127.0.0.1 --port 3306 -u root -proot -e "GRANT ALL PRIVILEGES ON \`test_frappe\`.* TO 'test_frappe'@'localhost'"
mariadb --host 127.0.0.1 --port 3306 -u root -proot -e "FLUSH PRIVILEGES"
fi
if [ "$DB" == "postgres" ];then
echo "travis" | psql -h 127.0.0.1 -p 5432 -c "CREATE DATABASE test_frappe" -U postgres;
echo "travis" | psql -h 127.0.0.1 -p 5432 -c "CREATE USER test_frappe WITH PASSWORD 'test_frappe'" -U postgres;
fi
install_whktml() {
wget -O /tmp/wkhtmltox.deb https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
sudo apt install /tmp/wkhtmltox.deb
}
install_whktml &
wkpid=$!
mysql --host 127.0.0.1 --port 3306 -u root -e "UPDATE mysql.user SET Password=PASSWORD('travis') WHERE User='root'"
mysql --host 127.0.0.1 --port 3306 -u root -e "FLUSH PRIVILEGES"
wget -O /tmp/wkhtmltox.tar.xz https://github.com/frappe/wkhtmltopdf/raw/master/wkhtmltox-0.12.3_linux-generic-amd64.tar.xz
tar -xf /tmp/wkhtmltox.tar.xz -C /tmp
sudo mv /tmp/wkhtmltox/bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf
sudo chmod o+x /usr/local/bin/wkhtmltopdf
cd ~/frappe-bench || exit
@@ -70,13 +36,6 @@ sed -i 's/schedule:/# schedule:/g' Procfile
sed -i 's/socketio:/# socketio:/g' Procfile
sed -i 's/redis_socketio:/# redis_socketio:/g' Procfile
bench get-app payments --branch develop
bench get-app erpnext "${GITHUB_WORKSPACE}"
if [ "$TYPE" == "server" ]; then bench setup requirements --dev; fi
wait $wkpid
bench start &>> ~/frappe-bench/bench_start.log &
CI=Yes bench build --app frappe &
bench start &> bench_run_logs.txt &
bench --site test_site reinstall --yes

View File

@@ -0,0 +1,63 @@
import frappe
from frappe import _
from frappe.model.document import Document
# ruleid: frappe-modifying-but-not-comitting
def on_submit(self):
if self.value_of_goods == 0:
frappe.throw(_('Value of goods cannot be 0'))
self.status = 'Submitted'
# ok: frappe-modifying-but-not-comitting
def on_submit(self):
if self.value_of_goods == 0:
frappe.throw(_('Value of goods cannot be 0'))
self.status = 'Submitted'
self.db_set('status', 'Submitted')
# ok: frappe-modifying-but-not-comitting
def on_submit(self):
if self.value_of_goods == 0:
frappe.throw(_('Value of goods cannot be 0'))
x = "y"
self.status = x
self.db_set('status', x)
# ok: frappe-modifying-but-not-comitting
def on_submit(self):
x = "y"
self.status = x
self.save()
# ruleid: frappe-modifying-but-not-comitting-other-method
class DoctypeClass(Document):
def on_submit(self):
self.good_method()
self.tainted_method()
def tainted_method(self):
self.status = "uptate"
# ok: frappe-modifying-but-not-comitting-other-method
class DoctypeClass(Document):
def on_submit(self):
self.good_method()
self.tainted_method()
def tainted_method(self):
self.status = "update"
self.db_set("status", "update")
# ok: frappe-modifying-but-not-comitting-other-method
class DoctypeClass(Document):
def on_submit(self):
self.good_method()
self.tainted_method()
self.save()
def tainted_method(self):
self.status = "uptate"

View File

@@ -0,0 +1,151 @@
# This file specifies rules for correctness according to how frappe doctype data model works.
rules:
- id: frappe-modifying-but-not-comitting
patterns:
- pattern: |
def $METHOD(self, ...):
...
self.$ATTR = ...
- pattern-not: |
def $METHOD(self, ...):
...
self.$ATTR = ...
...
self.db_set(..., self.$ATTR, ...)
- pattern-not: |
def $METHOD(self, ...):
...
self.$ATTR = $SOME_VAR
...
self.db_set(..., $SOME_VAR, ...)
- pattern-not: |
def $METHOD(self, ...):
...
self.$ATTR = $SOME_VAR
...
self.save()
- metavariable-regex:
metavariable: '$ATTR'
# this is negative look-ahead, add more attrs to ignore like (ignore|ignore_this_too|ignore_me)
regex: '^(?!ignore_linked_doctypes|status_updater)(.*)$'
- metavariable-regex:
metavariable: "$METHOD"
regex: "(on_submit|on_cancel)"
message: |
DocType modified in self.$METHOD. Please check if modification of self.$ATTR is commited to database.
languages: [python]
severity: ERROR
- id: frappe-modifying-but-not-comitting-other-method
patterns:
- pattern: |
class $DOCTYPE(...):
def $METHOD(self, ...):
...
self.$ANOTHER_METHOD()
...
def $ANOTHER_METHOD(self, ...):
...
self.$ATTR = ...
- pattern-not: |
class $DOCTYPE(...):
def $METHOD(self, ...):
...
self.$ANOTHER_METHOD()
...
def $ANOTHER_METHOD(self, ...):
...
self.$ATTR = ...
...
self.db_set(..., self.$ATTR, ...)
- pattern-not: |
class $DOCTYPE(...):
def $METHOD(self, ...):
...
self.$ANOTHER_METHOD()
...
def $ANOTHER_METHOD(self, ...):
...
self.$ATTR = $SOME_VAR
...
self.db_set(..., $SOME_VAR, ...)
- pattern-not: |
class $DOCTYPE(...):
def $METHOD(self, ...):
...
self.$ANOTHER_METHOD()
...
self.save()
def $ANOTHER_METHOD(self, ...):
...
self.$ATTR = ...
- metavariable-regex:
metavariable: "$METHOD"
regex: "(on_submit|on_cancel)"
message: |
self.$ANOTHER_METHOD is called from self.$METHOD, check if changes to self.$ATTR are commited to database.
languages: [python]
severity: ERROR
- id: frappe-print-function-in-doctypes
pattern: print(...)
message: |
Did you mean to leave this print statement in? Consider using msgprint or logger instead of print statement.
languages: [python]
severity: WARNING
paths:
include:
- "*/**/doctype/*"
- id: frappe-modifying-child-tables-while-iterating
pattern-either:
- pattern: |
for $ROW in self.$TABLE:
...
self.remove(...)
- pattern: |
for $ROW in self.$TABLE:
...
self.append(...)
message: |
Child table being modified while iterating on it.
languages: [python]
severity: ERROR
paths:
include:
- "*/**/doctype/*"
- id: frappe-same-key-assigned-twice
pattern-either:
- pattern: |
{..., $X: $A, ..., $X: $B, ...}
- pattern: |
dict(..., ($X, $A), ..., ($X, $B), ...)
- pattern: |
_dict(..., ($X, $A), ..., ($X, $B), ...)
message: |
key `$X` is uselessly assigned twice. This could be a potential bug.
languages: [python]
severity: ERROR
- id: frappe-manual-commit
patterns:
- pattern: frappe.db.commit()
- pattern-not-inside: |
try:
...
except ...:
...
message: |
Manually commiting a transaction is highly discouraged. Read about the transaction model implemented by Frappe Framework before adding manual commits: https://frappeframework.com/docs/user/en/api/database#database-transaction-model If you think manual commit is required then add a comment explaining why and `// nosemgrep` on the same line.
paths:
exclude:
- "**/patches/**"
- "**/demo/**"
languages: [python]
severity: ERROR

14
.github/helper/semgrep_rules/report.py vendored Normal file
View File

@@ -0,0 +1,14 @@
from frappe import _
# ruleid: frappe-missing-translate-function-in-report-python
{"label": "Field Label"}
# ruleid: frappe-missing-translate-function-in-report-python
dict(label="Field Label")
# ok: frappe-missing-translate-function-in-report-python
{"label": _("Field Label")}
# ok: frappe-missing-translate-function-in-report-python
dict(label=_("Field Label"))

30
.github/helper/semgrep_rules/ux.py vendored Normal file
View File

@@ -0,0 +1,30 @@
import frappe
from frappe import _, msgprint, throw
# ruleid: frappe-missing-translate-function-python
throw("Error Occured")
# ruleid: frappe-missing-translate-function-python
frappe.throw("Error Occured")
# ruleid: frappe-missing-translate-function-python
frappe.msgprint("Useful message")
# ruleid: frappe-missing-translate-function-python
msgprint("Useful message")
# ok: frappe-missing-translate-function-python
translatedmessage = _("Hello")
# ok: frappe-missing-translate-function-python
throw(translatedmessage)
# ok: frappe-missing-translate-function-python
msgprint(translatedmessage)
# ok: frappe-missing-translate-function-python
msgprint(_("Helpful message"))
# ok: frappe-missing-translate-function-python
frappe.throw(_("Error occured"))

16
.github/helper/site_config.json vendored Normal file
View File

@@ -0,0 +1,16 @@
{
"db_host": "127.0.0.1",
"db_port": 3306,
"db_name": "test_frappe",
"db_password": "test_frappe",
"auto_email_id": "test@example.com",
"mail_server": "smtp.example.com",
"mail_login": "test@example.com",
"mail_password": "test",
"admin_password": "admin",
"root_login": "root",
"root_password": "travis",
"host_name": "http://test_site:8000",
"install_apps": ["erpnext"],
"throttle_user_limit": 100
}

View File

@@ -1,17 +0,0 @@
{
"db_host": "127.0.0.1",
"db_port": 3306,
"db_name": "test_frappe",
"db_password": "test_frappe",
"auto_email_id": "test@example.com",
"mail_server": "smtp.example.com",
"mail_login": "test@example.com",
"mail_password": "test",
"admin_password": "admin",
"use_mysqlclient": 1,
"root_login": "root",
"root_password": "root",
"host_name": "http://test_site:8000",
"install_apps": ["payments", "erpnext"],
"throttle_user_limit": 100
}

View File

@@ -1,18 +0,0 @@
{
"db_host": "127.0.0.1",
"db_port": 5432,
"db_name": "test_frappe",
"db_password": "test_frappe",
"db_type": "postgres",
"allow_tests": true,
"auto_email_id": "test@example.com",
"mail_server": "smtp.example.com",
"mail_login": "test@example.com",
"mail_password": "test",
"admin_password": "admin",
"root_login": "postgres",
"root_password": "travis",
"host_name": "http://test_site:8000",
"install_apps": ["erpnext"],
"throttle_user_limit": 100
}

View File

@@ -2,9 +2,7 @@ import re
import sys
errors_encounter = 0
pattern = re.compile(
r"_\(([\"']{,3})(?P<message>((?!\1).)*)\1(\s*,\s*context\s*=\s*([\"'])(?P<py_context>((?!\5).)*)\5)*(\s*,(\s*?.*?\n*?)*(,\s*([\"'])(?P<js_context>((?!\11).)*)\11)*)*\)"
)
pattern = re.compile(r"_\(([\"']{,3})(?P<message>((?!\1).)*)\1(\s*,\s*context\s*=\s*([\"'])(?P<py_context>((?!\5).)*)\5)*(\s*,(\s*?.*?\n*?)*(,\s*([\"'])(?P<js_context>((?!\11).)*)\11)*)*\)")
words_pattern = re.compile(r"_{1,2}\([\"'`]{1,3}.*?[a-zA-Z]")
start_pattern = re.compile(r"_{1,2}\([f\"'`]{1,3}")
f_string_pattern = re.compile(r"_\(f[\"']")
@@ -12,14 +10,14 @@ starts_with_f_pattern = re.compile(r"_\(f")
# skip first argument
files = sys.argv[1:]
files_to_scan = [_file for _file in files if _file.endswith((".py", ".js"))]
files_to_scan = [_file for _file in files if _file.endswith(('.py', '.js'))]
for _file in files_to_scan:
with open(_file) as f:
print(f"Checking: {_file}")
with open(_file, 'r') as f:
print(f'Checking: {_file}')
file_lines = f.readlines()
for line_number, line in enumerate(file_lines, 1):
if "frappe-lint: disable-translate" in line:
if 'frappe-lint: disable-translate' in line:
continue
start_matches = start_pattern.search(line)
@@ -30,9 +28,7 @@ for _file in files_to_scan:
has_f_string = f_string_pattern.search(line)
if has_f_string:
errors_encounter += 1
print(
f"\nF-strings are not supported for translations at line number {line_number}\n{line.strip()[:100]}"
)
print(f'\nF-strings are not supported for translations at line number {line_number}\n{line.strip()[:100]}')
continue
else:
continue
@@ -40,29 +36,25 @@ for _file in files_to_scan:
match = pattern.search(line)
error_found = False
if not match and line.endswith((",\n", "[\n")):
if not match and line.endswith((',\n', '[\n')):
# concat remaining text to validate multiline pattern
line = "".join(file_lines[line_number - 1 :])
line = line[start_matches.start() + 1 :]
line = "".join(file_lines[line_number - 1:])
line = line[start_matches.start() + 1:]
match = pattern.match(line)
if not match:
error_found = True
print(f"\nTranslation syntax error at line number {line_number}\n{line.strip()[:100]}")
print(f'\nTranslation syntax error at line number {line_number}\n{line.strip()[:100]}')
if not error_found and not words_pattern.search(line):
error_found = True
print(
f"\nTranslation is useless because it has no words at line number {line_number}\n{line.strip()[:100]}"
)
print(f'\nTranslation is useless because it has no words at line number {line_number}\n{line.strip()[:100]}')
if error_found:
errors_encounter += 1
if errors_encounter > 0:
print(
'\nVisit "https://frappeframework.com/docs/user/en/translations" to learn about valid translation strings.'
)
print('\nVisit "https://frappeframework.com/docs/user/en/translations" to learn about valid translation strings.')
sys.exit(1)
else:
print("\nGood To Go!")
print('\nGood To Go!')

View File

@@ -1,40 +0,0 @@
#!/bin/bash
set -e
cd ~ || exit
echo "Setting Up Bench..."
pip install frappe-bench
bench -v init frappe-bench --skip-assets --skip-redis-config-generation --python "$(which python)"
cd ./frappe-bench || exit
echo "Get ERPNext..."
bench get-app --skip-assets erpnext "${GITHUB_WORKSPACE}"
echo "Generating POT file..."
bench generate-pot-file --app erpnext
cd ./apps/erpnext || exit
echo "Configuring git user..."
git config user.email "developers@erpnext.com"
git config user.name "frappe-pr-bot"
echo "Setting the correct git remote..."
# Here, the git remote is a local file path by default. Let's change it to the upstream repo.
git remote set-url upstream https://github.com/frappe/erpnext.git
echo "Creating a new branch..."
isodate=$(date -u +"%Y-%m-%d")
branch_name="pot_${BASE_BRANCH}_${isodate}"
git checkout -b "${branch_name}"
echo "Commiting changes..."
git add erpnext/locale/main.pot
git commit -m "chore: update POT file"
gh auth setup-git
git push -u upstream "${branch_name}"
echo "Creating a PR..."
gh pr create --fill --base "${BASE_BRANCH}" --head "${branch_name}" --reviewer ${PR_REVIEWER} -R frappe/erpnext

55
.github/labeler.yml vendored
View File

@@ -1,55 +0,0 @@
accounts:
- erpnext/accounts/*
- erpnext/controllers/accounts_controller.py
- erpnext/controllers/taxes_and_totals.py
stock:
- erpnext/stock/*
- erpnext/controllers/stock_controller.py
- erpnext/controllers/item_variant.py
assets:
- erpnext/assets/*
regional:
- erpnext/regional/*
selling:
- erpnext/selling/*
- erpnext/controllers/selling_controller.py
buying:
- erpnext/buying/*
- erpnext/controllers/buying_controller.py
support:
- erpnext/support/*
POS:
- pos*
ecommerce:
- erpnext/e_commerce/*
maintenance:
- erpnext/maintenance/*
manufacturing:
- erpnext/manufacturing/*
crm:
- erpnext/crm/*
HR:
- erpnext/hr/*
payroll:
- erpnext/payroll*
projects:
- erpnext/projects/*
# Any python files modifed but no test files modified
needs-tests:
- any: ['erpnext/**/*.py']
all: ['!erpnext/**/test*.py']

4
.github/release.yml vendored
View File

@@ -1,4 +0,0 @@
changelog:
exclude:
labels:
- skip-release-notes

49
.github/stale.yml vendored
View File

@@ -1,35 +1,34 @@
# Configuration for probot-stale - https://github.com/probot/stale
# Label to use when marking as stale
staleLabel: inactive
# Number of days of inactivity before an Issue or Pull Request becomes stale
daysUntilStale: 30
# Limit the number of actions per hour, from 1-30. Default is 30
limitPerRun: 10
# Set to true to ignore issues in a project (defaults to false)
exemptProjects: true
# Set to true to ignore issues in a milestone (defaults to false)
exemptMilestones: true
# Skip the stale action for draft PRs
exemptDraftPr: true
# Number of days of inactivity before a stale Issue or Pull Request is closed.
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
daysUntilClose: 7
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
exemptLabels:
- hotfix
- no-stale
pulls:
daysUntilStale: 15
daysUntilClose: 3
exemptLabels:
- hotfix
markComment: >
This pull request has been automatically marked as inactive because it has
not had recent activity. It will be closed within 3 days if no further
activity occurs, but it only takes a comment to keep a contribution alive
:) Also, even if it is closed, you can always reopen the PR when you're
ready. Thank you for contributing.
# Set to true to ignore issues in a project (defaults to false)
exemptProjects: false
# Set to true to ignore issues in a milestone (defaults to false)
exemptMilestones: true
# Label to use when marking as stale
staleLabel: inactive
# Comment to post when marking as stale. Set to `false` to disable
markComment: >
This pull request has been automatically marked as stale because it has not had
recent activity. It will be closed within a week if no further activity occurs, but it
only takes a comment to keep a contribution alive :) Also, even if it is closed,
you can always reopen the PR when you're ready. Thank you for contributing.
# Limit the number of actions per hour, from 1-30. Default is 30
limitPerRun: 30
# Limit to only `issues` or `pulls`
only: pulls

View File

@@ -1,32 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="4 2 193 52">
<g filter="url(#filter0_dd)">
<rect x="4" y="2" width="193" height="52" rx="6" fill="#2490EF"/>
<path d="M28 22.2891H32.8786V35.5H36.2088V22.2891H41.0874V19.5H28V22.2891Z" fill="white"/>
<path d="M41.6982 35.5H45.0129V28.7109C45.0129 27.2344 46.0866 26.2188 47.5494 26.2188C48.0085 26.2188 48.6388 26.2969 48.95 26.3984V23.4453C48.6543 23.375 48.2419 23.3281 47.9074 23.3281C46.5691 23.3281 45.472 24.1094 45.0362 25.5938H44.9117V23.5H41.6982V35.5Z" fill="white"/>
<path d="M52.8331 40C55.2996 40 56.6068 38.7344 57.2837 36.7969L61.9289 23.5156L58.4197 23.5L55.9221 32.3125H55.7976L53.3233 23.5H49.8374L54.1247 35.8437L53.9302 36.3516C53.4944 37.4766 52.6619 37.5312 51.4947 37.1719L50.7478 39.6562C51.2224 39.8594 51.9927 40 52.8331 40Z" fill="white"/>
<path d="M73.6142 35.7344C77.2401 35.7344 79.4966 33.2422 79.4966 29.5469C79.4966 25.8281 77.2401 23.3438 73.6142 23.3438C69.9883 23.3438 67.7319 25.8281 67.7319 29.5469C67.7319 33.2422 69.9883 35.7344 73.6142 35.7344ZM73.6298 33.1562C71.9569 33.1562 71.101 31.6171 71.101 29.5233C71.101 27.4296 71.9569 25.8827 73.6298 25.8827C75.2715 25.8827 76.1274 27.4296 76.1274 29.5233C76.1274 31.6171 75.2715 33.1562 73.6298 33.1562Z" fill="white"/>
<path d="M84.7253 28.5625C84.7331 27.0156 85.6512 26.1094 86.9895 26.1094C88.3201 26.1094 89.1215 26.9844 89.1137 28.4531V35.5H92.4284V27.8594C92.4284 25.0625 90.7945 23.3438 88.3046 23.3438C86.5306 23.3438 85.2466 24.2187 84.7097 25.6172H84.5697V23.5H81.4106V35.5H84.7253V28.5625Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M102.429 19.5H113.429V22.3141H102.429V19.5ZM102.429 35.5V26.6794H112.699V29.4982H105.94V35.5H102.429Z" fill="white"/>
<path d="M131.584 24.9625C131.09 21.5057 128.345 19.5 124.785 19.5C120.589 19.5 117.429 22.463 117.429 27.4924C117.429 32.5142 120.55 35.4848 124.785 35.4848C128.604 35.4848 131.137 33.0916 131.584 30.1211L128.651 30.1059C128.282 31.9293 126.745 32.9549 124.824 32.9549C122.22 32.9549 120.354 31.0632 120.354 27.4924C120.354 23.9824 122.204 22.0299 124.832 22.0299C126.784 22.0299 128.314 23.1011 128.651 24.9625H131.584Z" fill="white"/>
<path d="M136.409 19.7124H133.571V35.2718H136.409V19.7124Z" fill="white"/>
<path d="M144.031 35.5001C147.56 35.5001 149.803 33.0917 149.803 29.483C149.803 25.8667 147.56 23.4507 144.031 23.4507C140.502 23.4507 138.259 25.8667 138.259 29.483C138.259 33.0917 140.502 35.5001 144.031 35.5001ZM144.047 33.2969C142.094 33.2969 141.137 31.6103 141.137 29.4754C141.137 27.3406 142.094 25.6312 144.047 25.6312C145.968 25.6312 146.925 27.3406 146.925 29.4754C146.925 31.6103 145.968 33.2969 144.047 33.2969Z" fill="white"/>
<path d="M159.338 30.3641C159.338 32.1419 158.028 33.0232 156.773 33.0232C155.409 33.0232 154.499 32.0887 154.499 30.6072V23.6025H151.66V31.0327C151.66 33.8361 153.307 35.4239 155.675 35.4239C157.479 35.4239 158.749 34.5046 159.298 33.1979H159.424V35.272H162.176V23.6025H159.338V30.3641Z" fill="white"/>
<path d="M169.014 35.4769C171.084 35.4769 172.017 34.2841 172.464 33.4332H172.637V35.2718H175.429V19.7124H172.582V25.532H172.464C172.033 24.6887 171.147 23.4503 169.022 23.4503C166.238 23.4503 164.05 25.5624 164.05 29.4522C164.05 33.2965 166.175 35.4769 169.014 35.4769ZM169.806 33.2205C167.931 33.2205 166.943 31.6251 166.943 29.437C166.943 27.2642 167.916 25.7067 169.806 25.7067C171.633 25.7067 172.637 27.173 172.637 29.437C172.637 31.701 171.617 33.2205 169.806 33.2205Z" fill="white"/>
</g>
<defs>
<filter id="filter0_dd" x="0" y="0" width="201" height="60" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset/>
<feGaussianBlur stdDeviation="0.25"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="2"/>
<feGaussianBlur stdDeviation="2"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.13 0"/>
<feBlend mode="normal" in2="effect1_dropShadow" result="effect2_dropShadow"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect2_dropShadow" result="shape"/>
</filter>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -5,9 +5,6 @@ on:
- closed
- labeled
permissions:
contents: read
jobs:
main:
runs-on: ubuntu-latest
@@ -24,6 +21,6 @@ jobs:
- name: Run backport
uses: ./actions/backport
with:
token: ${{secrets.RELEASE_TOKEN}}
token: ${{secrets.BACKPORT_BOT_TOKEN}}
labelsToAdd: "backport"
title: "{{originalTitle}}"

View File

@@ -2,10 +2,6 @@ name: Trigger Docker build on release
on:
release:
types: [released]
permissions:
contents: read
jobs:
curl:
runs-on: ubuntu-latest

View File

@@ -3,9 +3,6 @@ on:
pull_request:
types: [ opened, synchronize, reopened, edited ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
@@ -15,7 +12,7 @@ jobs:
- name: 'Setup Environment'
uses: actions/setup-python@v2
with:
python-version: '3.10'
python-version: 3.6
- name: 'Clone repo'
uses: actions/checkout@v2

View File

@@ -1,39 +0,0 @@
# This workflow is agnostic to branches. Only maintain on develop branch.
# To add/remove branches just modify the matrix.
name: Regenerate POT file (translatable strings)
on:
schedule:
# 9:30 UTC => 3 PM IST Sunday
- cron: "30 9 * * 0"
workflow_dispatch:
jobs:
regenerate-pot-file:
name: Regenerate POT file
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
branch: ["develop"]
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ matrix.branch }}
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Run script to update POT file
run: |
bash ${GITHUB_WORKSPACE}/.github/helper/update_pot_file.sh
env:
GH_TOKEN: ${{ secrets.RELEASE_TOKEN }}
BASE_BRANCH: ${{ matrix.branch }}
PR_REVIEWER: barredterra # change to your GitHub username if you copied this file

View File

@@ -1,36 +0,0 @@
# This workflow is agnostic to branches. Only maintain on develop branch.
# To add/remove versions just modify the matrix.
name: Create weekly release pull requests
permissions:
contents: read
on:
schedule:
# 9:30 UTC => 3 PM IST Tuesday
- cron: "30 9 * * 2"
workflow_dispatch:
jobs:
stable-release:
name: Release
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
version: ["14", "15"]
steps:
- uses: octokit/request-action@v2.x
with:
route: POST /repos/{owner}/{repo}/pulls
owner: frappe
repo: erpnext
title: |-
"chore: release v${{ matrix.version }}"
body: "Automated weekly release."
base: version-${{ matrix.version }}
head: version-${{ matrix.version }}-hotfix
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}

View File

@@ -1,30 +0,0 @@
name: "Auto-label PRs based on title"
on:
pull_request_target:
types: [opened, reopened]
jobs:
add-label-if-prefix-matches:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- name: Check PR title and add label if it matches prefixes
uses: actions/github-script@v7
continue-on-error: true
with:
script: |
const title = context.payload.pull_request.title.toLowerCase();
const prefixes = ['chore', 'ci', 'style', 'test', 'refactor'];
// Check if the PR title starts with any of the prefixes
if (prefixes.some(prefix => title.startsWith(prefix))) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
labels: ['skip-release-notes']
});
}

View File

@@ -1,16 +0,0 @@
name: "Pull Request Labeler"
on:
pull_request_target:
types: [opened, reopened]
permissions:
issues: write
pull-requests: write
jobs:
triage:
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v3
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"

View File

@@ -3,43 +3,29 @@ name: Linters
on:
pull_request: { }
permissions:
contents: read
jobs:
linters:
name: linters
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v2
- name: Set up Python 3.10
uses: actions/setup-python@v4
- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: '3.10'
cache: pip
python-version: 3.8
- name: Install and Run Pre-commit
uses: pre-commit/action@v3.0.0
semgrep:
name: semgrep
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.10
uses: actions/setup-python@v4
with:
python-version: '3.10'
cache: pip
uses: pre-commit/action@v2.0.3
- name: Download Semgrep rules
run: git clone --depth 1 https://github.com/frappe/semgrep-rules.git frappe-semgrep-rules
- name: Download semgrep
run: pip install semgrep
- name: Run Semgrep rules
run: semgrep ci --config ./frappe-semgrep-rules/rules --config r/python.lang.correctness
- uses: returntocorp/semgrep-action@v1
env:
SEMGREP_TIMEOUT: 120
with:
config: >-
r/python.lang.correctness
./frappe-semgrep-rules/rules

View File

@@ -1,21 +0,0 @@
name: 'Lock threads'
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
permissions:
issues: write
pull-requests: write
jobs:
lock:
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v5
with:
github-token: ${{ github.token }}
issue-inactive-days: 14
pr-inactive-days: 14

View File

@@ -4,72 +4,65 @@ on:
pull_request:
paths-ignore:
- '**.js'
- '**.css'
- '**.md'
- '**.html'
- '**.csv'
types: [opened, unlabeled, synchronize, reopened]
workflow_dispatch:
permissions:
contents: read
concurrency:
group: patch-develop-${{ github.event_name }}-${{ github.event.number || github.event_name == 'workflow_dispatch' && github.run_id || '' }}
group: patch-mariadb-v13-${{ github.event.number }}
cancel-in-progress: true
jobs:
test:
runs-on: ubuntu-latest
runs-on: ubuntu-18.04
timeout-minutes: 60
name: Patch Test
services:
mysql:
image: mariadb:10.6
image: mariadb:10.3
env:
MARIADB_ROOT_PASSWORD: 'root'
MYSQL_ALLOW_EMPTY_PASSWORD: YES
ports:
- 3306:3306
options: --health-cmd="mariadb-admin ping" --health-interval=5s --health-timeout=2s --health-retries=3
options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3
steps:
- name: Clone
uses: actions/checkout@v4
- name: Check for valid Python & Merge Conflicts
- name: Check for merge conficts label
if: ${{ contains(github.event.pull_request.labels.*.name, 'conflicts') }}
run: |
python -m compileall -fq "${GITHUB_WORKSPACE}"
if grep -lr --exclude-dir=node_modules "^<<<<<<< " "${GITHUB_WORKSPACE}"
then echo "Found merge conflicts"
exit 1
fi
echo "Remove merge conflicts and remove conflict label to run CI"
exit 1
- name: Clone
uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v2
with:
python-version: '3.11'
python-version: 3.7
- name: Setup Node
uses: actions/setup-node@v4
uses: actions/setup-node@v2
with:
node-version: 18
node-version: 12
check-latest: true
- name: Add to Hosts
run: echo "127.0.0.1 test_site" | sudo tee -a /etc/hosts
- name: Cache pip
uses: actions/cache@v4
uses: actions/cache@v2
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/*requirements.txt', '**/pyproject.toml') }}
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
${{ runner.os }}-
- name: Cache node modules
uses: actions/cache@v4
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
@@ -84,7 +77,7 @@ jobs:
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- uses: actions/cache@v4
- uses: actions/cache@v2
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
@@ -93,72 +86,11 @@ jobs:
${{ runner.os }}-yarn-
- name: Install
run: |
pip install frappe-bench
bash ${GITHUB_WORKSPACE}/.github/helper/install.sh
env:
DB: mariadb
TYPE: server
run: bash ${GITHUB_WORKSPACE}/.github/helper/install.sh
- name: Run Patch Tests
run: |
cd ~/frappe-bench/
bench remove-app payments --force
jq 'del(.install_apps)' ~/frappe-bench/sites/test_site/site_config.json > tmp.json
mv tmp.json ~/frappe-bench/sites/test_site/site_config.json
wget https://erpnext.com/files/v13-erpnext.sql.gz
bench --site test_site --force restore ~/frappe-bench/v13-erpnext.sql.gz
git -C "apps/frappe" remote set-url upstream https://github.com/frappe/frappe.git
git -C "apps/erpnext" remote set-url upstream https://github.com/frappe/erpnext.git
function update_to_version() {
version=$1
branch_name="version-$version-hotfix"
echo "Updating to v$version"
# Fetch and checkout branches
git -C "apps/frappe" fetch --depth 1 upstream $branch_name:$branch_name
git -C "apps/erpnext" fetch --depth 1 upstream $branch_name:$branch_name
git -C "apps/frappe" checkout -q -f $branch_name
git -C "apps/erpnext" checkout -q -f $branch_name
# Resetup env and install apps
pgrep honcho | xargs kill
rm -rf ~/frappe-bench/env
bench -v setup env
bench pip install -e ./apps/erpnext
bench start &>> ~/frappe-bench/bench_start.log &
bench --site test_site migrate
}
update_to_version 14
update_to_version 15
echo "Updating to latest version"
git -C "apps/frappe" fetch --depth 1 upstream "${GITHUB_BASE_REF:-${GITHUB_REF##*/}}"
git -C "apps/frappe" checkout -q -f FETCH_HEAD
git -C "apps/erpnext" checkout -q -f "$GITHUB_SHA"
pgrep honcho | xargs kill
rm -rf ~/frappe-bench/env
bench -v setup env
bench pip install -e ./apps/erpnext
bench start &>> ~/frappe-bench/bench_start.log &
wget https://erpnext.com/files/v10-erpnext.sql.gz
bench --site test_site --force restore ~/frappe-bench/v10-erpnext.sql.gz
bench --site test_site migrate
- name: Show bench output
if: ${{ always() }}
run: |
cd ~/frappe-bench
cat bench_start.log || true
cd logs
for f in ./*.log*; do
echo "Printing log: $f";
cat $f
done

View File

@@ -1,25 +0,0 @@
# Tests are skipped for these files but github doesn't allow "passing" hence this is required.
name: Skipped Patch Test
on:
pull_request:
paths:
- "**.js"
- "**.css"
- "**.md"
- "**.html"
- "**.csv"
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
name: Patch Test
steps:
- name: Pass skipped tests unconditionally
run: "echo Skipped"

View File

@@ -1,35 +0,0 @@
name: Generate Semantic Release
on:
push:
branches:
- version-13
permissions:
contents: read
jobs:
release:
name: Release
runs-on: ubuntu-latest
steps:
- name: Checkout Entire Repository
uses: actions/checkout@v2
with:
fetch-depth: 0
persist-credentials: false
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: 20
- name: Setup dependencies
run: |
npm install @semantic-release/git @semantic-release/exec --no-save
- name: Create Release
env:
GH_TOKEN: ${{ secrets.RELEASE_TOKEN }}
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
GIT_AUTHOR_NAME: "Frappe PR Bot"
GIT_AUTHOR_EMAIL: "developers@frappe.io"
GIT_COMMITTER_NAME: "Frappe PR Bot"
GIT_COMMITTER_EMAIL: "developers@frappe.io"
run: npx semantic-release

View File

@@ -1,42 +0,0 @@
# This action:
#
# 1. Generates release notes using github API.
# 2. Strips unnecessary info like chore/style etc from notes.
# 3. Updates release info.
# This action needs to be maintained on all branches that do releases.
name: 'Release Notes'
on:
workflow_dispatch:
inputs:
tag_name:
description: 'Tag of release like v13.0.0'
required: true
type: string
release:
types: [released]
permissions:
contents: read
jobs:
regen-notes:
name: 'Regenerate release notes'
runs-on: ubuntu-latest
steps:
- name: Update notes
run: |
NEW_NOTES=$(gh api --method POST -H "Accept: application/vnd.github+json" /repos/frappe/erpnext/releases/generate-notes -f tag_name=$RELEASE_TAG \
| jq -r '.body' \
| sed -E '/^\* (chore|ci|test|docs|style)/d' \
| sed -E 's/by @mergify //'
)
RELEASE_ID=$(gh api -H "Accept: application/vnd.github+json" /repos/frappe/erpnext/releases/tags/$RELEASE_TAG | jq -r '.id')
gh api --method PATCH -H "Accept: application/vnd.github+json" /repos/frappe/erpnext/releases/$RELEASE_ID -f body="$NEW_NOTES"
env:
GH_TOKEN: ${{ secrets.RELEASE_TOKEN }}
RELEASE_TAG: ${{ github.event.inputs.tag_name || github.event.release.tag_name }}

View File

@@ -1,133 +0,0 @@
name: Individual
on:
workflow_dispatch:
concurrency:
group: server-individual-tests-develop-${{ github.event_name }}-${{ github.event.number || github.event_name == 'workflow_dispatch' && github.run_id || '' }}
cancel-in-progress: false
permissions:
contents: read
jobs:
discover:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Clone
uses: actions/checkout@v4
- id: set-matrix
run: |
# Use grep and find to get the list of test files
matrix=$(find . -path '*/doctype/*/test_*.py' | xargs grep -l 'def test_' | awk '{
# Remove ./ prefix, file extension, and replace / with .
gsub(/^\.\//, "", $0)
gsub(/\.py$/, "", $0)
gsub(/\//, ".", $0)
# Add to array
tests[NR] = $0
}
END {
# Start JSON array
printf "{\n \"include\": [\n"
# Loop through array and create JSON objects
for (i=1; i<=NR; i++) {
printf " {\"test\": \"%s\"}", tests[i]
if (i < NR) printf ","
printf "\n"
}
# Close JSON array
printf " ]\n}"
}')
# Output the matrix
echo "matrix=$(echo "$matrix" | jq -c)" >> $GITHUB_OUTPUT
# For debugging (optional)
echo "Generated matrix:"
echo "$matrix"
test:
needs: discover
runs-on: ubuntu-latest
timeout-minutes: 60
env:
NODE_ENV: "production"
strategy:
fail-fast: false
matrix: ${{fromJson(needs.discover.outputs.matrix)}}
name: Test
services:
mysql:
image: mariadb:10.6
env:
MARIADB_ROOT_PASSWORD: 'root'
ports:
- 3306:3306
options: --health-cmd="mariadb-admin ping" --health-interval=5s --health-timeout=2s --health-retries=3
steps:
- name: Clone
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 18
check-latest: true
- name: Add to Hosts
run: echo "127.0.0.1 test_site" | sudo tee -a /etc/hosts
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/*requirements.txt', '**/pyproject.toml') }}
restore-keys: |
${{ runner.os }}-pip-
${{ runner.os }}-
- name: Cache node modules
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- uses: actions/cache@v4
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install
run: bash ${GITHUB_WORKSPACE}/.github/helper/install.sh
env:
DB: mariadb
TYPE: server
FRAPPE_USER: ${{ github.event.inputs.user }}
FRAPPE_BRANCH: ${{ github.event.inputs.branch }}
- name: Run Tests
run: 'cd ~/frappe-bench/ && bench --site test_site run-tests --app erpnext --module ${{ matrix.test }}'

View File

@@ -1,30 +0,0 @@
name: Semantic Commits
on:
pull_request: {}
permissions:
contents: read
concurrency:
group: commitcheck-erpnext-${{ github.event.number }}
cancel-in-progress: true
jobs:
commitlint:
name: Check Commit Titles
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 200
- uses: actions/setup-node@v3
with:
node-version: 18
check-latest: true
- name: Check commit titles
run: |
npm install @commitlint/cli @commitlint/config-conventional
npx commitlint --verbose --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }}

View File

@@ -1,27 +0,0 @@
# Tests are skipped for these files but github doesn't allow "passing" hence this is required.
name: Skipped Tests
on:
pull_request:
paths:
- "**.js"
- "**.css"
- "**.md"
- "**.html"
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
container: [1, 2, 3, 4]
name: Python Unit Tests
steps:
- name: Pass skipped tests unconditionally
run: "echo Skipped"

View File

@@ -1,163 +0,0 @@
name: Server (Mariadb)
on:
repository_dispatch:
types: [frappe-framework-change]
pull_request:
paths-ignore:
- '**.js'
- '**.css'
- '**.md'
- '**.html'
schedule:
# Run everday at midnight UTC / 5:30 IST
- cron: "0 0 * * *"
workflow_dispatch:
inputs:
user:
description: 'Frappe Framework repository user (add your username for forks)'
required: true
default: 'frappe'
type: string
branch:
description: 'Frappe Framework branch'
default: 'develop'
required: false
type: string
permissions:
contents: read
concurrency:
group: server-mariadb-develop-${{ github.event_name }}-${{ github.event.number || github.event_name == 'workflow_dispatch' && github.run_id || '' }}
cancel-in-progress: true
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 60
env:
NODE_ENV: "production"
WITH_COVERAGE: ${{ github.event_name != 'pull_request' }}
strategy:
fail-fast: false
matrix:
container: [1, 2, 3, 4]
name: Python Unit Tests
services:
mysql:
image: mariadb:10.6
env:
MARIADB_ROOT_PASSWORD: 'root'
ports:
- 3306:3306
options: --health-cmd="mariadb-admin ping" --health-interval=5s --health-timeout=2s --health-retries=3
steps:
- name: Clone
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Check for valid Python & Merge Conflicts
run: |
python -m compileall -fq "${GITHUB_WORKSPACE}"
if grep -lr --exclude-dir=node_modules "^<<<<<<< " "${GITHUB_WORKSPACE}"
then echo "Found merge conflicts"
exit 1
fi
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 18
check-latest: true
- name: Add to Hosts
run: echo "127.0.0.1 test_site" | sudo tee -a /etc/hosts
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/*requirements.txt', '**/pyproject.toml') }}
restore-keys: |
${{ runner.os }}-pip-
${{ runner.os }}-
- name: Cache node modules
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- uses: actions/cache@v4
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install
run: bash ${GITHUB_WORKSPACE}/.github/helper/install.sh
env:
DB: mariadb
TYPE: server
FRAPPE_USER: ${{ github.event.inputs.user }}
FRAPPE_BRANCH: ${{ github.event.client_payload.sha || github.event.inputs.branch }}
- name: Run Tests
run: 'cd ~/frappe-bench/ && bench --site test_site run-parallel-tests --app erpnext --total-builds ${{ strategy.job-total }} --build-number ${{ matrix.container }}'
env:
TYPE: server
CAPTURE_COVERAGE: ${{ github.event_name != 'pull_request' }}
- name: Show bench output
if: ${{ always() }}
run: cat ~/frappe-bench/bench_start.log || true
- name: Upload coverage data
uses: actions/upload-artifact@v4
if: github.event_name != 'pull_request'
with:
name: coverage-${{ matrix.container }}
path: /home/runner/frappe-bench/sites/coverage.xml
coverage:
name: Coverage Wrap Up
needs: test
runs-on: ubuntu-latest
if: ${{ github.event_name != 'pull_request' }}
steps:
- name: Clone
uses: actions/checkout@v4
- name: Download artifacts
uses: actions/download-artifact@v4
- name: Upload coverage data
uses: codecov/codecov-action@v4
with:
name: MariaDB
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
verbose: true

View File

@@ -1,115 +0,0 @@
name: Server (Postgres)
on:
pull_request:
paths-ignore:
- '**.js'
- '**.md'
- '**.html'
types: [opened, labelled, synchronize, reopened]
concurrency:
group: server-postgres-develop-${{ github.event_name }}-${{ github.event.number || github.event_name == 'workflow_dispatch' && github.run_id || '' }}
cancel-in-progress: true
permissions:
contents: read
jobs:
test:
if: ${{ contains(github.event.pull_request.labels.*.name, 'postgres') }}
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
container: [1]
name: Python Unit Tests
services:
postgres:
image: postgres:13.3
env:
POSTGRES_PASSWORD: travis
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- name: Clone
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Check for valid Python & Merge Conflicts
run: |
python -m compileall -fq "${GITHUB_WORKSPACE}"
if grep -lr --exclude-dir=node_modules "^<<<<<<< " "${GITHUB_WORKSPACE}"
then echo "Found merge conflicts"
exit 1
fi
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 18
check-latest: true
- name: Add to Hosts
run: echo "127.0.0.1 test_site" | sudo tee -a /etc/hosts
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/*requirements.txt', '**/pyproject.toml') }}
restore-keys: |
${{ runner.os }}-pip-
${{ runner.os }}-
- name: Cache node modules
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- uses: actions/cache@v4
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install
run: bash ${GITHUB_WORKSPACE}/.github/helper/install.sh
env:
DB: postgres
TYPE: server
- name: Run Tests
run: cd ~/frappe-bench/ && bench --site test_site run-parallel-tests --app erpnext --use-orchestrator
env:
TYPE: server
CI_BUILD_ID: ${{ github.run_id }}
ORCHESTRATOR_URL: http://test-orchestrator.frappe.io

107
.github/workflows/server-tests.yml vendored Normal file
View File

@@ -0,0 +1,107 @@
name: Server
on:
pull_request:
paths-ignore:
- '**.js'
- '**.md'
types: [opened, unlabeled, synchronize, reopened]
workflow_dispatch:
push:
branches: [ develop ]
paths-ignore:
- '**.js'
- '**.md'
concurrency:
group: server-mariadb-v13-${{ github.event.number }}
cancel-in-progress: true
jobs:
test:
runs-on: ubuntu-18.04
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
container: [1, 2, 3]
name: Python Unit Tests
services:
mysql:
image: mariadb:10.3
env:
MYSQL_ALLOW_EMPTY_PASSWORD: YES
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3
steps:
- name: Check for merge conficts label
if: ${{ contains(github.event.pull_request.labels.*.name, 'conflicts') }}
run: |
echo "Remove merge conflicts and remove conflict label to run CI"
exit 1
- name: Clone
uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: 3.7
- name: Setup Node
uses: actions/setup-node@v2
with:
node-version: 12
check-latest: true
- name: Add to Hosts
run: echo "127.0.0.1 test_site" | sudo tee -a /etc/hosts
- name: Cache pip
uses: actions/cache@v2
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
${{ runner.os }}-
- name: Cache node modules
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- uses: actions/cache@v2
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install
run: bash ${GITHUB_WORKSPACE}/.github/helper/install.sh
- name: Run Tests
run: cd ~/frappe-bench/ && bench --site test_site run-parallel-tests --app erpnext --use-orchestrator
env:
TYPE: server
CI_BUILD_ID: ${{ github.run_id }}
ORCHESTRATOR_URL: http://test-orchestrator.frappe.io

View File

@@ -0,0 +1,22 @@
name: Frappe Linter
on:
pull_request:
branches:
- develop
- version-12-hotfix
- version-11-hotfix
jobs:
check_translation:
name: Translation Syntax Check
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- name: Setup python3
uses: actions/setup-python@v1
with:
python-version: 3.6
- name: Validating Translation Syntax
run: |
git fetch origin $GITHUB_BASE_REF:$GITHUB_BASE_REF -q
files=$(git diff --name-only --diff-filter=d $GITHUB_BASE_REF)
python $GITHUB_WORKSPACE/.github/helper/translation.py $files

117
.github/workflows/ui-tests.yml vendored Normal file
View File

@@ -0,0 +1,117 @@
name: UI
on:
pull_request:
paths-ignore:
- '**.md'
workflow_dispatch:
concurrency:
group: ui-v13-${{ github.event.number }}
cancel-in-progress: true
jobs:
test:
runs-on: ubuntu-18.04
timeout-minutes: 60
strategy:
fail-fast: false
name: UI Tests (Cypress)
services:
mysql:
image: mariadb:10.3
env:
MYSQL_ALLOW_EMPTY_PASSWORD: YES
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3
steps:
- name: Clone
uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: 3.7
- uses: actions/setup-node@v2
with:
node-version: 14
check-latest: true
- name: Add to Hosts
run: |
echo "127.0.0.1 test_site" | sudo tee -a /etc/hosts
- name: Cache pip
uses: actions/cache@v2
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
${{ runner.os }}-
- name: Cache node modules
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- uses: actions/cache@v2
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Cache cypress binary
uses: actions/cache@v2
with:
path: ~/.cache
key: ${{ runner.os }}-cypress-
restore-keys: |
${{ runner.os }}-cypress-
${{ runner.os }}-
- name: Install
run: bash ${GITHUB_WORKSPACE}/.github/helper/install.sh
env:
DB: mariadb
TYPE: ui
- name: Site Setup
run: cd ~/frappe-bench/ && bench --site test_site execute erpnext.setup.utils.before_tests
- name: cypress pre-requisites
run: cd ~/frappe-bench/apps/frappe && yarn add cypress-file-upload@^5 @testing-library/cypress@^8 --no-lockfile
- name: Build Assets
run: cd ~/frappe-bench/ && bench build
env:
CI: Yes
- name: UI Tests
run: cd ~/frappe-bench/ && bench --site test_site run-ui-tests erpnext --headless
env:
CYPRESS_RECORD_KEY: 60a8e3bf-08f5-45b1-9269-2b207d7d30cd
- name: Show bench console if tests failed
if: ${{ failure() }}
run: cat ~/frappe-bench/bench_run_logs.txt

6
.gitignore vendored
View File

@@ -2,11 +2,11 @@
*.py~
.DS_Store
conf.py
locale
latest_updates.json
.wnf-lang-status
*.egg-info
dist/
erpnext/public/dist
erpnext/docs/current
*.swp
*.swo
@@ -14,8 +14,4 @@ __pycache__
*~
.idea/
.vscode/
.helix/
node_modules/
.backportrc.json
# Aider AI Chat
.aider*

View File

@@ -2,84 +2,57 @@ pull_request_rules:
- name: Auto-close PRs on stable branch
conditions:
- and:
- and:
- author!=surajshetty3416
- author!=gavindsouza
- author!=rohitwaghchaure
- author!=nabinhait
- author!=ankush
- author!=deepeshgarg007
- author!=frappe-pr-bot
- author!=mergify[bot]
- or:
- base=version-13
- base=version-12
- base=version-14
- base=version-15
- base=version-16
- and:
- author!=surajshetty3416
- author!=gavindsouza
- author!=rohitwaghchaure
- author!=nabinhait
- or:
- base=version-13
- base=version-12
actions:
close:
comment:
message: |
@{{author}}, thanks for the contribution, but we do not accept pull requests on a stable branch. Please raise PR on an appropriate hotfix branch.
https://github.com/frappe/erpnext/wiki/Pull-Request-Checklist#which-branch
- name: backport to develop
conditions:
- label="backport develop"
actions:
backport:
branches:
- develop
assignees:
- "{{ author }}"
- name: backport to version-14-hotfix
conditions:
- label="backport version-14-hotfix"
actions:
backport:
branches:
- version-14-hotfix
assignees:
- "{{ author }}"
- name: backport to version-15-hotfix
conditions:
- label="backport version-15-hotfix"
actions:
backport:
branches:
- version-15-hotfix
assignees:
- "{{ author }}"
- name: Automatic merge on CI success and review
conditions:
- status-success=linters
- status-success=Sider
- status-success=Semantic Pull Request
- status-success=Patch Test
- status-success=Python Unit Tests (1)
- status-success=Python Unit Tests (2)
- status-success=Python Unit Tests (3)
- label!=dont-merge
- label!=squash
- "#approved-reviews-by>=1"
actions:
merge:
method: merge
- name: Automatic squash on CI success and review
conditions:
- status-success=linters
- status-success=Sider
- status-success=Patch Test
- status-success=Python Unit Tests (1)
- status-success=Python Unit Tests (2)
- status-success=Python Unit Tests (3)
- label!=dont-merge
- label=squash
- "#approved-reviews-by>=1"
actions:
merge:
method: squash
commit_message_template: |
{{ title }} (#{{ number }})
message: |
@{{author}}, thanks for the contribution, but we do not accept pull requests on a stable branch. Please raise PR on an appropriate hotfix branch.
https://github.com/frappe/erpnext/wiki/Pull-Request-Checklist#which-branch
{{ body }}
- name: backport to version-13-hotfix
conditions:
- label="backport version-13-hotfix"
actions:
backport:
branches:
- version-13-hotfix
assignees:
- "{{ author }}"
- name: backport to version-13-pre-release
conditions:
- label="backport version-13-pre-release"
actions:
backport:
branches:
- version-13-pre-release
assignees:
- "{{ author }}"
- name: backport to version-12-hotfix
conditions:
- label="backport version-12-hotfix"
actions:
backport:
branches:
- version-12-hotfix
assignees:
- "{{ author }}"
- name: backport to version-12-pre-release
conditions:
- label="backport version-12-pre-release"
actions:
backport:
branches:
- version-12-pre-release
assignees:
- "{{ author }}"

View File

@@ -1,11 +1,11 @@
exclude: 'node_modules|.git'
default_stages: [pre-commit]
default_stages: [commit]
fail_fast: false
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
rev: v4.0.1
hooks:
- id: trailing-whitespace
files: "erpnext.*"
@@ -15,58 +15,22 @@ repos:
args: ['--branch', 'develop']
- id: check-merge-conflict
- id: check-ast
- id: check-json
- id: check-toml
- id: check-yaml
- id: debug-statements
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v2.7.1
- repo: https://gitlab.com/pycqa/flake8
rev: 3.9.2
hooks:
- id: prettier
types_or: [javascript, vue, scss]
# Ignore any files that might contain jinja / bundles
exclude: |
(?x)^(
erpnext/public/dist/.*|
cypress/.*|
.*node_modules.*|
.*boilerplate.*|
erpnext/public/js/controllers/.*|
erpnext/templates/pages/order.js|
erpnext/templates/includes/.*
)$
- id: flake8
additional_dependencies: [
'flake8-bugbear',
]
args: ['--config', '.github/helper/.flake8_strict']
exclude: ".*setup.py$"
- repo: https://github.com/pre-commit/mirrors-eslint
rev: v8.44.0
- repo: https://github.com/timothycrosley/isort
rev: 5.9.1
hooks:
- id: eslint
types_or: [javascript]
args: ['--quiet']
# Ignore any files that might contain jinja / bundles
exclude: |
(?x)^(
erpnext/public/dist/.*|
cypress/.*|
.*node_modules.*|
.*boilerplate.*|
erpnext/public/js/controllers/.*|
erpnext/templates/pages/order.js|
erpnext/templates/includes/.*
)$
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.2.0
hooks:
- id: ruff
name: "Run ruff import sorter"
args: ["--select=I", "--fix"]
- id: ruff
name: "Run ruff linter"
- id: ruff-format
name: "Run ruff formatter"
- id: isort
exclude: ".*setup.py$"
ci:
autoupdate_schedule: weekly

View File

@@ -1,24 +0,0 @@
{
"branches": ["version-13"],
"plugins": [
"@semantic-release/commit-analyzer", {
"preset": "angular",
"releaseRules": [
{"breaking": true, "release": false}
]
},
"@semantic-release/release-notes-generator",
[
"@semantic-release/exec", {
"prepareCmd": 'sed -ir "s/[0-9]*\.[0-9]*\.[0-9]*/${nextRelease.version}/" erpnext/__init__.py'
}
],
[
"@semantic-release/git", {
"assets": ["erpnext/__init__.py"],
"message": "chore(release): Bumped to Version ${nextRelease.version}\n\n${nextRelease.notes}"
}
],
"@semantic-release/github"
]
}

View File

@@ -3,22 +3,33 @@
# These owners will be the default owners for everything in
# the repo. Unless a later match takes precedence,
erpnext/accounts/ @ruthra-kumar
erpnext/assets/ @khushi8112
erpnext/regional @ruthra-kumar
erpnext/selling @ruthra-kumar
erpnext/support/ @ruthra-kumar
pos*
erpnext/accounts/ @nextchamp-saqib @deepeshgarg007
erpnext/assets/ @nextchamp-saqib @deepeshgarg007
erpnext/erpnext_integrations/ @nextchamp-saqib
erpnext/loan_management/ @nextchamp-saqib @deepeshgarg007
erpnext/regional @nextchamp-saqib @deepeshgarg007
erpnext/selling @nextchamp-saqib @deepeshgarg007
erpnext/support/ @nextchamp-saqib @deepeshgarg007
pos* @nextchamp-saqib
erpnext/buying/ @rohitwaghchaure
erpnext/maintenance/ @rohitwaghchaure
erpnext/manufacturing/ @rohitwaghchaure
erpnext/quality_management/ @rohitwaghchaure
erpnext/stock/ @rohitwaghchaure
erpnext/subcontracting @rohitwaghchaure
erpnext/buying/ @marination @rohitwaghchaure @ankush
erpnext/e_commerce/ @marination
erpnext/maintenance/ @marination @rohitwaghchaure
erpnext/manufacturing/ @marination @rohitwaghchaure @ankush
erpnext/portal/ @marination
erpnext/quality_management/ @marination @rohitwaghchaure
erpnext/shopping_cart/ @marination
erpnext/stock/ @marination @rohitwaghchaure @ankush
erpnext/controllers/ @ruthra-kumar @rohitwaghchaure
erpnext/patches/ @ruthra-kumar
erpnext/crm/ @ruchamahabal @pateljannat
erpnext/education/ @ruchamahabal @pateljannat
erpnext/healthcare/ @ruchamahabal @pateljannat @chillaranand
erpnext/hr/ @ruchamahabal @pateljannat
erpnext/non_profit/ @ruchamahabal
erpnext/payroll @ruchamahabal @pateljannat
erpnext/projects/ @ruchamahabal @pateljannat
.github/ @ruthra-kumar
pyproject.toml @akhilnarang
erpnext/controllers @deepeshgarg007 @nextchamp-saqib @rohitwaghchaure @marination
.github/ @surajshetty3416 @ankush
requirements.txt @gavindsouza

198
README.md
View File

@@ -1,161 +1,115 @@
<div align="center">
<a href="https://frappe.io/erpnext">
<img src="./erpnext/public/images/v16/erpnext.svg" alt="ERPNext Logo" height="80px" width="80xp"/>
</a>
<img src="https://raw.githubusercontent.com/frappe/erpnext/develop/erpnext/public/images/erpnext-logo.png" height="128">
<h2>ERPNext</h2>
<p align="center">
<p>Powerful, Intuitive and Open-Source ERP</p>
<p>ERP made simple</p>
</p>
[![Learn on Frappe School](https://img.shields.io/badge/Frappe%20School-Learn%20ERPNext-blue?style=flat-square)](https://frappe.school)<br><br>
[![CI](https://github.com/frappe/erpnext/actions/workflows/server-tests-mariadb.yml/badge.svg?event=schedule)](https://github.com/frappe/erpnext/actions/workflows/server-tests-mariadb.yml)
[![docker pulls](https://img.shields.io/docker/pulls/frappe/erpnext-worker.svg)](https://hub.docker.com/r/frappe/erpnext-worker)
[![CI](https://github.com/frappe/erpnext/actions/workflows/ci-tests.yml/badge.svg?branch=develop)](https://github.com/frappe/erpnext/actions/workflows/ci-tests.yml)
[![Open Source Helpers](https://www.codetriage.com/frappe/erpnext/badges/users.svg)](https://www.codetriage.com/frappe/erpnext)
[![Coverage Status](https://coveralls.io/repos/github/frappe/erpnext/badge.svg?branch=develop)](https://coveralls.io/github/frappe/erpnext?branch=develop)
[https://erpnext.com](https://erpnext.com)
</div>
<div align="center">
<img src="./erpnext/public/images/v16/hero_image.png"/>
</div>
ERPNext as a monolith includes the following areas for managing businesses:
<div align="center">
<a href="https://erpnext-demo.frappe.cloud/api/method/erpnext_demo.erpnext_demo.auth.login_demo">Live Demo</a>
-
<a href="https://frappe.io/erpnext">Website</a>
-
<a href="https://docs.frappe.io/erpnext/">Documentation</a>
</div>
1. [Accounting](https://erpnext.com/open-source-accounting)
1. [Warehouse Management](https://erpnext.com/distribution/warehouse-management-system)
1. [CRM](https://erpnext.com/open-source-crm)
1. [Sales](https://erpnext.com/open-source-sales-purchase)
1. [Purchase](https://erpnext.com/open-source-sales-purchase)
1. [HRMS](https://erpnext.com/open-source-hrms)
1. [Project Management](https://erpnext.com/open-source-projects)
1. [Support](https://erpnext.com/open-source-help-desk-software)
1. [Asset Management](https://erpnext.com/open-source-asset-management-software)
1. [Quality Management](https://erpnext.com/docs/user/manual/en/quality-management)
1. [Manufacturing](https://erpnext.com/open-source-manufacturing-erp-software)
1. [Website Management](https://erpnext.com/open-source-website-builder-software)
1. [Customize ERPNext](https://erpnext.com/docs/user/manual/en/customize-erpnext)
1. [And More](https://erpnext.com/docs/user/manual/en/)
## ERPNext
ERPNext requires MariaDB.
100% Open-Source ERP system to help you run your business.
ERPNext is built on the [Frappe Framework](https://github.com/frappe/frappe), a full-stack web app framework built with Python & JavaScript.
### Motivation
- [User Guide](https://erpnext.com/docs/user)
- [Discussion Forum](https://discuss.erpnext.com/)
Running a business is a complex task - handling invoices, tracking stock, managing personnel and even more ad-hoc activities. In a market where software is sold separately to manage each of these tasks, ERPNext does all of the above and more, for free.
---
### Key Features
### Containerized Installation
- **Accounting**: All the tools you need to manage cash flow in one place, right from recording transactions to summarizing and analyzing financial reports.
- **Order Management**: Track inventory levels, replenish stock, and manage sales orders, customers, suppliers, shipments, deliverables, and order fulfillment.
- **Manufacturing**: Simplifies the production cycle, helps track material consumption, exhibits capacity planning, handles subcontracting, and more!
- **Asset Management**: From purchase to perishment, IT infrastructure to equipment. Cover every branch of your organization, all in one centralized system.
- **Projects**: Delivery both internal and external Projects on time, budget and Profitability. Track tasks, timesheets, and issues by project.
Use docker to deploy ERPNext in production or for development of [Frappe](https://github.com/frappe/frappe) apps. See https://github.com/frappe/frappe_docker for more details.
<details open>
<summary>More</summary>
<img src="https://erpnext.com/files/v16_bom.png"/>
<img src="https://erpnext.com/files/v16_stock_summary.png"/>
<img src="https://erpnext.com/files/v16_job_card.png"/>
<img src="https://erpnext.com/files/v16_tasks.png"/>
</details>
### Under the Hood
- [**Frappe Framework**](https://github.com/frappe/frappe): A full-stack web application framework written in Python and Javascript. The framework provides a robust foundation for building web applications, including a database abstraction layer, user authentication, and a REST API.
- [**Frappe UI**](https://github.com/frappe/frappe-ui): A Vue-based UI library, to provide a modern user interface. The Frappe UI library provides a variety of components that can be used to build single-page applications on top of the Frappe Framework.
## Production Setup
### Managed Hosting
You can try [Frappe Cloud](https://frappecloud.com), a simple, user-friendly and sophisticated [open-source](https://github.com/frappe/press) platform to host Frappe applications with peace of mind.
It takes care of installation, setup, upgrades, monitoring, maintenance and support of your Frappe deployments. It is a fully featured developer platform with an ability to manage and control multiple Frappe deployments.
<div>
<a href="https://erpnext-demo.frappe.cloud/app/home" target="_blank">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://frappe.io/files/try-on-fc-white.png">
<img src="https://frappe.io/files/try-on-fc-black.png" alt="Try on Frappe Cloud" height="28" />
</picture>
</a>
</div>
### Self-Hosted
#### Docker
Prerequisites: docker, docker-compose, git. Refer [Docker Documentation](https://docs.docker.com) for more details on Docker setup.
Run following commands:
```
git clone https://github.com/frappe/frappe_docker
cd frappe_docker
docker compose -f pwd.yml up -d
```
After a couple of minutes, site should be accessible on your localhost port: 8080. Use below default login credentials to access the site.
- Username: Administrator
- Password: admin
See [Frappe Docker](https://github.com/frappe/frappe_docker?tab=readme-ov-file#to-run-on-arm64-architecture-follow-this-instructions) for ARM based docker setup.
## Development Setup
### Manual Install
### Full Install
The Easy Way: our install script for bench will install all dependencies (e.g. MariaDB). See https://github.com/frappe/bench for more details.
New passwords will be created for the ERPNext "Administrator" user, the MariaDB root user, and the frappe user (the script displays the passwords and saves them to ~/frappe_passwords.txt).
### Virtual Image
### Local
You can download a virtual image to run ERPNext in a virtual machine on your local system.
To setup the repository locally follow the steps mentioned below:
- [ERPNext Download](http://erpnext.com/download)
1. Setup bench by following the [Installation Steps](https://frappeframework.com/docs/user/en/installation) and start the server
```
bench start
```
System and user credentials are listed on the download page.
2. In a separate terminal window, run the following commands:
```
# Create a new site
bench new-site erpnext.localhost
```
---
3. Get the ERPNext app and install it
```
# Get the ERPNext app
bench get-app https://github.com/frappe/erpnext
## License
# Install the app
bench --site erpnext.localhost install-app erpnext
```
GNU/General Public License (see [license.txt](license.txt))
4. Open the URL `http://erpnext.localhost:8000/app` in your browser, you should see the app running
## Learning and community
1. [Frappe School](https://school.frappe.io) - Learn Frappe Framework and ERPNext from the various courses by the maintainers or from the community.
2. [Official documentation](https://docs.erpnext.com/) - Extensive documentation for ERPNext.
3. [Discussion Forum](https://discuss.erpnext.com/) - Engage with community of ERPNext users and service providers.
4. [Telegram Group](https://erpnext_public.t.me) - Get instant help from huge community of users.
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 Frappe Technologies Pvt Ltd (Frappe) and Contributors.
---
## Contributing
1. [Issue Guidelines](https://github.com/frappe/erpnext/wiki/Issue-Guidelines)
1. [Report Security Vulnerabilities](https://erpnext.com/security)
1. [Pull Request Requirements](https://github.com/frappe/erpnext/wiki/Contribution-Guidelines)
2. [Translations](https://crowdin.com/project/frappe)
1. [Translations](https://translate.erpnext.com)
1. [Chart of Accounts](https://charts.erpnext.com)
---
## Logo and Trademark Policy
## Logo and Trademark
Please read our [Logo and Trademark Policy](TRADEMARK_POLICY.md).
The brand name ERPNext and the logo are trademarks of Frappe Technologies Pvt. Ltd.
<br />
<br />
<div align="center" style="padding-top: 0.75rem;">
<a href="https://frappe.io" target="_blank">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://frappe.io/files/Frappe-white.png">
<img src="https://frappe.io/files/Frappe-black.png" alt="Frappe Technologies" height="28"/>
</picture>
</a>
</div>
### Introduction
Frappe Technologies Pvt. Ltd. (Frappe) owns and oversees the trademarks for the ERPNext name and logos. We have developed this trademark usage policy with the following goals in mind:
- Wed like to make it easy for anyone to use the ERPNext name or logo for community-oriented efforts that help spread and improve ERPNext.
- Wed like to make it clear how ERPNext-related businesses and projects can (and cannot) use the ERPNext name and logo.
- Wed like to make it hard for anyone to use the ERPNext name and logo to unfairly profit from, trick or confuse people who are looking for official ERPNext resources.
### Frappe Trademark Usage Policy
Permission from Frappe is required to use the ERPNext name or logo as part of any project, product, service, domain or company name.
We will grant permission to use the ERPNext name and logo for projects that meet the following criteria:
- 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.
Use of the ERPNext name and logo is additionally allowed in the following situations:
All other ERPNext-related businesses or projects can use the ERPNext name and logo to refer to and explain their services, but they cannot use them as part of a product, project, service, domain, or company name and they cannot use them in any way that suggests an affiliation with or endorsement by ERPNext or Frappe Technologies or the ERPNext open source project. For example, a consulting company can describe its business as “123 Web Services, offering ERPNext consulting for small businesses,” but cannot call its business “The ERPNext Consulting Company.”
Similarly, its OK to use the ERPNext logo as part of a page that describes your products or services, but it is not OK to use it as part of your company or product logo or branding itself. Under no circumstances is it permitted to use ERPNext as part of a top-level domain name.
We do not allow the use of the trademark in advertising, including AdSense/AdWords.
Please note that it is not the goal of this policy to limit commercial activity around ERPNext. We encourage ERPNext-based businesses, and we would love to see hundreds of them.
When in doubt about your use of the ERPNext name or logo, please contact Frappe Technologies for clarification.
(inspired by WordPress)

View File

@@ -1,36 +0,0 @@
## Logo and Trademark Policy
The brand name ERPNext and the logo are trademarks of Frappe Technologies Pvt. Ltd.
### Introduction
Frappe Technologies Pvt. Ltd. (Frappe) owns and oversees the trademarks for the ERPNext name and logos. We have developed this trademark usage policy with the following goals in mind:
- Wed like to make it easy for anyone to use the ERPNext name or logo for community-oriented efforts that help spread and improve ERPNext.
- Wed like to make it clear how ERPNext-related businesses and projects can (and cannot) use the ERPNext name and logo.
- Wed like to make it hard for anyone to use the ERPNext name and logo to unfairly profit from, trick or confuse people who are looking for official ERPNext resources.
### Frappe Trademark Usage Policy
Permission from Frappe is required to use the ERPNext name or logo as part of any project, product, service, domain or company name.
We will grant permission to use the ERPNext name and logo for projects that meet the following criteria:
- 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.
Use of the ERPNext name and logo is additionally allowed in the following situations:
All other ERPNext-related businesses or projects can use the ERPNext name and logo to refer to and explain their services, but they cannot use them as part of a product, project, service, domain, or company name and they cannot use them in any way that suggests an affiliation with or endorsement by ERPNext or Frappe Technologies or the ERPNext open source project. For example, a consulting company can describe its business as “123 Web Services, offering ERPNext consulting for small businesses,” but cannot call its business “The ERPNext Consulting Company.”
Similarly, its OK to use the ERPNext logo as part of a page that describes your products or services, but it is not OK to use it as part of your company or product logo or branding itself. Under no circumstances is it permitted to use ERPNext as part of a top-level domain name.
We do not allow the use of the trademark in advertising, including AdSense/AdWords.
Please note that it is not the goal of this policy to limit commercial activity around ERPNext. We encourage ERPNext-based businesses, and we would love to see hundreds of them.
When in doubt about your use of the ERPNext name or logo, please contact Frappe Technologies for clarification.
(inspired by WordPress)

View File

@@ -1,3 +0,0 @@
**/setup/setup_wizard/data/uom_data.json,erpnext.gettext.extractors.uom_data.extract
**/setup/doctype/incoterm/incoterms.csv,erpnext.gettext.extractors.incoterms.extract
**/setup/setup_wizard/data/*.txt,erpnext.gettext.extractors.lines_from_txt_file.extract
1 **/setup/setup_wizard/data/uom_data.json erpnext.gettext.extractors.uom_data.extract
2 **/setup/doctype/incoterm/incoterms.csv erpnext.gettext.extractors.incoterms.extract
3 **/setup/setup_wizard/data/*.txt erpnext.gettext.extractors.lines_from_txt_file.extract

View File

@@ -1,26 +0,0 @@
codecov:
require_ci_to_pass: yes
coverage:
status:
project:
default:
target: auto
threshold: 0.5%
patch:
default:
target: 85%
threshold: 0%
base: auto
branches:
- develop
if_ci_failed: ignore
only_pulls: true
comment:
layout: "diff, files"
require_changes: true
ignore:
- "erpnext/demo"

View File

@@ -1,13 +0,0 @@
module.exports = {
parserPreset: "conventional-changelog-conventionalcommits",
rules: {
"subject-empty": [2, "never"],
"type-case": [2, "always", "lower-case"],
"type-empty": [2, "never"],
"type-enum": [
2,
"always",
["build", "chore", "ci", "docs", "feat", "fix", "perf", "refactor", "revert", "style", "test"],
],
},
};

View File

@@ -1,14 +0,0 @@
files:
- source: /erpnext/locale/main.pot
translation: /erpnext/locale/%two_letters_code%.po
pull_request_title: "fix: sync translations from crowdin"
pull_request_labels:
- translation
- skip-release-notes
pull_request_reviewers:
- barredterra # change to your GitHub username if you copied this file
commit_message: "fix: %language% translations"
append_commit_message: false
languages_mapping:
two_letters_code:
pt-BR: pt_BR

11
cypress.json Normal file
View File

@@ -0,0 +1,11 @@
{
"baseUrl": "http://test_site:8000",
"projectId": "da59y9",
"adminPassword": "admin",
"defaultCommandTimeout": 20000,
"pageLoadTimeout": 15000,
"retries": {
"runMode": 2,
"openMode": 2
}
}

View File

@@ -0,0 +1,5 @@
{
"name": "Using fixtures to represent data",
"email": "hello@cypress.io",
"body": "Fixtures are a great way to mock data for responses to routes"
}

View File

@@ -0,0 +1,13 @@
context('Customer', () => {
before(() => {
cy.login();
});
it('Check Customer Group', () => {
cy.visit(`app/customer/`);
cy.get('.primary-action').click();
cy.wait(500);
cy.get('.custom-actions > .btn').click();
cy.get_field('customer_group', 'Link').should('have.value', 'All Customer Groups');
});
});

View File

@@ -0,0 +1,116 @@
context('Organizational Chart', () => {
before(() => {
cy.login();
cy.visit('/app/website');
});
it('navigates to org chart', () => {
cy.visit('/app');
cy.visit('/app/organizational-chart');
cy.url().should('include', '/organizational-chart');
cy.window().its('frappe.csrf_token').then(csrf_token => {
return cy.request({
url: `/api/method/erpnext.tests.ui_test_helpers.create_employee_records`,
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
'X-Frappe-CSRF-Token': csrf_token
},
timeout: 60000
}).then(res => {
expect(res.status).eq(200);
cy.get('.frappe-control[data-fieldname=company] input').focus().as('input');
cy.get('@input')
.clear({ force: true })
.type('Test Org Chart{downarrow}{enter}', { force: true })
.blur({ force: true });
});
});
});
it('renders root nodes and loads children for the first expandable node', () => {
// check rendered root nodes and the node name, title, connections
cy.get('.hierarchy').find('.root-level ul.node-children').children()
.should('have.length', 2)
.first()
.as('first-child');
cy.get('@first-child').get('.node-name').contains('Test Employee 1');
cy.get('@first-child').get('.node-info').find('.node-title').contains('CEO');
cy.get('@first-child').get('.node-info').find('.node-connections').contains('· 2 Connections');
cy.call('erpnext.tests.ui_test_helpers.get_employee_records').then(employee_records => {
// children of 1st root visible
cy.get(`div[data-parent="${employee_records.message[0]}"]`).as('child-node');
cy.get('@child-node')
.should('have.length', 1)
.should('be.visible');
cy.get('@child-node').get('.node-name').contains('Test Employee 3');
// connectors between first root node and immediate child
cy.get(`path[data-parent="${employee_records.message[0]}"]`)
.should('be.visible')
.invoke('attr', 'data-child')
.should('equal', employee_records.message[2]);
});
});
it('hides active nodes children and connectors on expanding sibling node', () => {
cy.call('erpnext.tests.ui_test_helpers.get_employee_records').then(employee_records => {
// click sibling
cy.get(`#${employee_records.message[1]}`)
.click()
.should('have.class', 'active');
// child nodes and connectors hidden
cy.get(`[data-parent="${employee_records.message[0]}"]`).should('not.be.visible');
cy.get(`path[data-parent="${employee_records.message[0]}"]`).should('not.be.visible');
});
});
it('collapses previous level nodes and refreshes connectors on expanding child node', () => {
cy.call('erpnext.tests.ui_test_helpers.get_employee_records').then(employee_records => {
// click child node
cy.get(`#${employee_records.message[3]}`)
.click()
.should('have.class', 'active');
// previous level nodes: parent should be on active-path; other nodes should be collapsed
cy.get(`#${employee_records.message[0]}`).should('have.class', 'collapsed');
cy.get(`#${employee_records.message[1]}`).should('have.class', 'active-path');
// previous level connectors refreshed
cy.get(`path[data-parent="${employee_records.message[1]}"]`)
.should('have.class', 'collapsed-connector');
// child node's children and connectors rendered
cy.get(`[data-parent="${employee_records.message[3]}"]`).should('be.visible');
cy.get(`path[data-parent="${employee_records.message[3]}"]`).should('be.visible');
});
});
it('expands previous level nodes', () => {
cy.call('erpnext.tests.ui_test_helpers.get_employee_records').then(employee_records => {
cy.get(`#${employee_records.message[0]}`)
.click()
.should('have.class', 'active');
cy.get(`[data-parent="${employee_records.message[0]}"]`)
.should('be.visible');
cy.get('ul.hierarchy').children().should('have.length', 2);
cy.get(`#connectors`).children().should('have.length', 1);
});
});
it('edit node navigates to employee master', () => {
cy.call('erpnext.tests.ui_test_helpers.get_employee_records').then(employee_records => {
cy.get(`#${employee_records.message[0]}`).find('.btn-edit-node')
.click();
cy.url().should('include', `/employee/${employee_records.message[0]}`);
});
});
});

View File

@@ -0,0 +1,195 @@
context('Organizational Chart Mobile', () => {
before(() => {
cy.login();
cy.visit('/app/website');
});
it('navigates to org chart', () => {
cy.viewport(375, 667);
cy.visit('/app');
cy.visit('/app/organizational-chart');
cy.url().should('include', '/organizational-chart');
cy.window().its('frappe.csrf_token').then(csrf_token => {
return cy.request({
url: `/api/method/erpnext.tests.ui_test_helpers.create_employee_records`,
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
'X-Frappe-CSRF-Token': csrf_token
},
timeout: 60000
}).then(res => {
expect(res.status).eq(200);
cy.get('.frappe-control[data-fieldname=company] input').focus().as('input');
cy.get('@input')
.clear({ force: true })
.type('Test Org Chart{downarrow}{enter}', { force: true })
.blur({ force: true });
});
});
});
it('renders root nodes', () => {
// check rendered root nodes and the node name, title, connections
cy.get('.hierarchy-mobile').find('.root-level').children()
.should('have.length', 2)
.first()
.as('first-child');
cy.get('@first-child').get('.node-name').contains('Test Employee 1');
cy.get('@first-child').get('.node-info').find('.node-title').contains('CEO');
cy.get('@first-child').get('.node-info').find('.node-connections').contains('· 2');
});
it('expands root node', () => {
cy.call('erpnext.tests.ui_test_helpers.get_employee_records').then(employee_records => {
cy.get(`#${employee_records.message[1]}`)
.click()
.should('have.class', 'active');
// other root node removed
cy.get(`#${employee_records.message[0]}`).should('not.exist');
// children of active root node
cy.get('.hierarchy-mobile').find('.level').first().find('ul.node-children').children()
.should('have.length', 2);
cy.get(`div[data-parent="${employee_records.message[1]}"]`).first().as('child-node');
cy.get('@child-node').should('be.visible');
cy.get('@child-node')
.get('.node-name')
.contains('Test Employee 4');
// connectors between root node and immediate children
cy.get(`path[data-parent="${employee_records.message[1]}"]`).as('connectors');
cy.get('@connectors')
.should('have.length', 2)
.should('be.visible');
cy.get('@connectors')
.first()
.invoke('attr', 'data-child')
.should('eq', employee_records.message[3]);
});
});
it('expands child node', () => {
cy.call('erpnext.tests.ui_test_helpers.get_employee_records').then(employee_records => {
cy.get(`#${employee_records.message[3]}`)
.click()
.should('have.class', 'active')
.as('expanded_node');
// 2 levels on screen; 1 on active path; 1 collapsed
cy.get('.hierarchy-mobile').children().should('have.length', 2);
cy.get(`#${employee_records.message[1]}`).should('have.class', 'active-path');
// children of expanded node visible
cy.get('@expanded_node')
.next()
.should('have.class', 'node-children')
.as('node-children');
cy.get('@node-children').children().should('have.length', 1);
cy.get('@node-children')
.first()
.get('.node-card')
.should('have.class', 'active-child')
.contains('Test Employee 7');
// orphan connectors removed
cy.get(`#connectors`).children().should('have.length', 2);
});
});
it('renders sibling group', () => {
cy.call('erpnext.tests.ui_test_helpers.get_employee_records').then(employee_records => {
// sibling group visible for parent
cy.get(`#${employee_records.message[1]}`)
.next()
.as('sibling_group');
cy.get('@sibling_group')
.should('have.attr', 'data-parent', 'undefined')
.should('have.class', 'node-group')
.and('have.class', 'collapsed');
cy.get('@sibling_group').get('.avatar-group').children().as('siblings');
cy.get('@siblings').should('have.length', 1);
cy.get('@siblings')
.first()
.should('have.attr', 'title', 'Test Employee 1');
});
});
it('expands previous level nodes', () => {
cy.call('erpnext.tests.ui_test_helpers.get_employee_records').then(employee_records => {
cy.get(`#${employee_records.message[6]}`)
.click()
.should('have.class', 'active');
// clicking on previous level node should remove all the nodes ahead
// and expand that node
cy.get(`#${employee_records.message[3]}`).click();
cy.get(`#${employee_records.message[3]}`)
.should('have.class', 'active')
.should('not.have.class', 'active-path');
cy.get(`#${employee_records.message[6]}`).should('have.class', 'active-child');
cy.get('.hierarchy-mobile').children().should('have.length', 2);
cy.get(`#connectors`).children().should('have.length', 2);
});
});
it('expands sibling group', () => {
cy.call('erpnext.tests.ui_test_helpers.get_employee_records').then(employee_records => {
// sibling group visible for parent
cy.get(`#${employee_records.message[6]}`).click();
cy.get(`#${employee_records.message[3]}`)
.next()
.click();
// siblings of parent should be visible
cy.get('.hierarchy-mobile').prev().as('sibling_group');
cy.get('@sibling_group')
.should('exist')
.should('have.class', 'sibling-group')
.should('not.have.class', 'collapsed');
cy.get(`#${employee_records.message[1]}`)
.should('be.visible')
.should('have.class', 'active');
cy.get(`[data-parent="${employee_records.message[1]}"]`)
.should('be.visible')
.should('have.length', 2)
.should('have.class', 'active-child');
});
});
it('goes to the respective level after clicking on non-collapsed sibling group', () => {
cy.call('erpnext.tests.ui_test_helpers.get_employee_records').then(() => {
// click on non-collapsed sibling group
cy.get('.hierarchy-mobile')
.prev()
.click();
// should take you to that level
cy.get('.hierarchy-mobile').find('li.level .node-card').should('have.length', 2);
});
});
it('edit node navigates to employee master', () => {
cy.call('erpnext.tests.ui_test_helpers.get_employee_records').then(employee_records => {
cy.get(`#${employee_records.message[0]}`).find('.btn-edit-node')
.click();
cy.url().should('include', `/employee/${employee_records.message[0]}`);
});
});
});

17
cypress/plugins/index.js Normal file
View File

@@ -0,0 +1,17 @@
// ***********************************************************
// This example plugins/index.js can be used to load plugins
//
// You can change the location of this file or turn off loading
// the plugins file with the 'pluginsFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/plugins-guide
// ***********************************************************
// This function is called when a project is opened or re-opened (e.g. due to
// the project's config changing)
module.exports = () => {
// `on` is used to hook into various events Cypress emits
// `config` is the resolved Cypress config
};

View File

@@ -0,0 +1,31 @@
// ***********************************************
// This example commands.js shows you how to
// create various custom commands and overwrite
// existing commands.
//
// For more comprehensive examples of custom
// commands please read more here:
// https://on.cypress.io/custom-commands
// ***********************************************
//
//
// -- This is a parent command --
// Cypress.Commands.add("login", (email, password) => { ... });
//
//
// -- This is a child command --
// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... });
//
//
// -- This is a dual command --
// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... });
//
//
// -- This is will overwrite an existing command --
// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... });
const slug = (name) => name.toLowerCase().replace(" ", "-");
Cypress.Commands.add("go_to_doc", (doctype, name) => {
cy.visit(`/app/${slug(doctype)}/${encodeURIComponent(name)}`);
});

26
cypress/support/index.js Normal file
View File

@@ -0,0 +1,26 @@
// ***********************************************************
// This example support/index.js is processed and
// loaded automatically before your test files.
//
// This is a great place to put global configuration and
// behavior that modifies Cypress.
//
// You can change the location of this file or turn off
// automatically serving support files with the
// 'supportFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/configuration
// ***********************************************************
// Import commands.js using ES2015 syntax:
import './commands';
import '../../../frappe/cypress/support/commands' // eslint-disable-line
// Alternatively you can use CommonJS syntax:
// require('./commands')
Cypress.Cookies.defaults({
preserve: 'sid'
});

12
cypress/tsconfig.json Normal file
View File

@@ -0,0 +1,12 @@
{
"compilerOptions": {
"allowJs": true,
"baseUrl": "../node_modules",
"types": [
"cypress"
]
},
"include": [
"**/*.*"
]
}

View File

@@ -1,72 +1,64 @@
import functools
import inspect
from typing import TypeVar
import frappe
from frappe.model.document import Document
from frappe.utils.user import is_website_user
__version__ = "16.0.0-dev"
from erpnext.hooks import regional_overrides
__version__ = '13.20.1'
def get_default_company(user=None):
"""Get default company for user"""
'''Get default company for user'''
from frappe.defaults import get_user_default_as_list
if not user:
user = frappe.session.user
companies = get_user_default_as_list("company", user)
companies = get_user_default_as_list(user, 'company')
if companies:
default_company = companies[0]
else:
default_company = frappe.db.get_single_value("Global Defaults", "default_company")
default_company = frappe.db.get_single_value('Global Defaults', 'default_company')
return default_company
def get_default_currency():
"""Returns the currency of the default company"""
'''Returns the currency of the default company'''
company = get_default_company()
if company:
return frappe.get_cached_value("Company", company, "default_currency")
return frappe.get_cached_value('Company', company, 'default_currency')
def get_default_cost_center(company):
"""Returns the default cost center of the company"""
'''Returns the default cost center of the company'''
if not company:
return None
if not frappe.flags.company_cost_center:
frappe.flags.company_cost_center = {}
if company not in frappe.flags.company_cost_center:
frappe.flags.company_cost_center[company] = frappe.get_cached_value("Company", company, "cost_center")
if not company in frappe.flags.company_cost_center:
frappe.flags.company_cost_center[company] = frappe.get_cached_value('Company', company, 'cost_center')
return frappe.flags.company_cost_center[company]
def get_company_currency(company):
"""Returns the default company currency"""
'''Returns the default company currency'''
if not frappe.flags.company_currency:
frappe.flags.company_currency = {}
if company not in frappe.flags.company_currency:
frappe.flags.company_currency[company] = frappe.db.get_value(
"Company", company, "default_currency", cache=True
)
if not company in frappe.flags.company_currency:
frappe.flags.company_currency[company] = frappe.db.get_value('Company', company, 'default_currency', cache=True)
return frappe.flags.company_currency[company]
def set_perpetual_inventory(enable=1, company=None):
if not company:
company = "_Test Company" if frappe.in_test else get_default_company()
company = "_Test Company" if frappe.flags.in_test else get_default_company()
company = frappe.get_doc("Company", company)
company.enable_perpetual_inventory = enable
company.save()
def encode_company_abbr(name, company=None, abbr=None):
"""Returns name encoded with company abbreviation"""
company_abbr = abbr or frappe.get_cached_value("Company", company, "abbr")
'''Returns name encoded with company abbreviation'''
company_abbr = abbr or frappe.get_cached_value('Company', company, "abbr")
parts = name.rsplit(" - ", 1)
if parts[-1].lower() != company_abbr.lower():
@@ -74,122 +66,76 @@ def encode_company_abbr(name, company=None, abbr=None):
return " - ".join(parts)
def is_perpetual_inventory_enabled(company):
if not company:
company = "_Test Company" if frappe.in_test else get_default_company()
company = "_Test Company" if frappe.flags.in_test else get_default_company()
if not hasattr(frappe.local, "enable_perpetual_inventory"):
if not hasattr(frappe.local, 'enable_perpetual_inventory'):
frappe.local.enable_perpetual_inventory = {}
if company not in frappe.local.enable_perpetual_inventory:
frappe.local.enable_perpetual_inventory[company] = (
frappe.get_cached_value("Company", company, "enable_perpetual_inventory") or 0
)
if not company in frappe.local.enable_perpetual_inventory:
frappe.local.enable_perpetual_inventory[company] = frappe.get_cached_value('Company',
company, "enable_perpetual_inventory") or 0
return frappe.local.enable_perpetual_inventory[company]
def get_default_finance_book(company=None):
if not company:
company = get_default_company()
if not hasattr(frappe.local, "default_finance_book"):
if not hasattr(frappe.local, 'default_finance_book'):
frappe.local.default_finance_book = {}
if company not in frappe.local.default_finance_book:
frappe.local.default_finance_book[company] = frappe.get_cached_value(
"Company", company, "default_finance_book"
)
if not company in frappe.local.default_finance_book:
frappe.local.default_finance_book[company] = frappe.get_cached_value('Company',
company, "default_finance_book")
return frappe.local.default_finance_book[company]
def get_party_account_type(party_type):
if not hasattr(frappe.local, "party_account_types"):
if not hasattr(frappe.local, 'party_account_types'):
frappe.local.party_account_types = {}
if party_type not in frappe.local.party_account_types:
frappe.local.party_account_types[party_type] = (
frappe.db.get_value("Party Type", party_type, "account_type") or ""
)
if not party_type in frappe.local.party_account_types:
frappe.local.party_account_types[party_type] = frappe.db.get_value("Party Type",
party_type, "account_type") or ''
return frappe.local.party_account_types[party_type]
def get_region(company=None):
"""Return the default country based on flag, company or global settings
'''Return the default country based on flag, company or global settings
You can also set global company flag in `frappe.flags.company`
"""
if not company:
company = frappe.local.flags.company
if company:
return frappe.get_cached_value("Company", company, "country")
return frappe.flags.country or frappe.get_system_settings("country")
'''
if company or frappe.flags.company:
return frappe.get_cached_value('Company',
company or frappe.flags.company, 'country')
elif frappe.flags.country:
return frappe.flags.country
else:
return frappe.get_system_settings('country')
def allow_regional(fn):
"""Decorator to make a function regionally overridable
'''Decorator to make a function regionally overridable
Example:
@erpnext.allow_regional
def myfunction():
pass"""
@functools.wraps(fn)
pass'''
def caller(*args, **kwargs):
overrides = frappe.get_hooks("regional_overrides", {}).get(get_region())
function_path = f"{inspect.getmodule(fn).__name__}.{fn.__name__}"
if not overrides or function_path not in overrides:
region = get_region()
fn_name = inspect.getmodule(fn).__name__ + '.' + fn.__name__
if region in regional_overrides and fn_name in regional_overrides[region]:
return frappe.get_attr(regional_overrides[region][fn_name])(*args, **kwargs)
else:
return fn(*args, **kwargs)
# Priority given to last installed app
return frappe.get_attr(overrides[function_path][-1])(*args, **kwargs)
return caller
def get_last_membership(member):
'''Returns last membership if exists'''
last_membership = frappe.get_all('Membership', 'name,to_date,membership_type',
dict(member=member, paid=1), order_by='to_date desc', limit=1)
def check_app_permission():
if frappe.session.user == "Administrator":
return True
if is_website_user():
return False
return True
T = TypeVar("T")
def normalize_ctx_input(T: type) -> callable:
"""
Normalizes the first argument (ctx) of the decorated function by:
- Converting Document objects to dictionaries
- Parsing JSON strings
- Casting the result to the specified type T
"""
def decorator(func: callable):
# conserve annotations for frappe.utils.typing_validations
@functools.wraps(func, assigned=(a for a in functools.WRAPPER_ASSIGNMENTS if a != "__annotations__"))
def wrapper(ctx: T | Document | dict | str, *args, **kwargs):
if isinstance(ctx, Document):
ctx = T(**ctx.as_dict())
elif isinstance(ctx, dict):
ctx = T(**ctx)
else:
ctx = T(**frappe.parse_json(ctx))
return func(ctx, *args, **kwargs)
# set annotations from function
wrapper.__annotations__.update({k: v for k, v in func.__annotations__.items() if k != "ctx"})
return wrapper
return decorator
if last_membership:
return last_membership[0]

View File

@@ -10,42 +10,4 @@ Entries are:
- Sales Invoice (Itemised)
- Purchase Invoice (Itemised)
All accounting entries are stored in the `General Ledger`
## Payment Ledger
Transactions on Receivable and Payable Account types will also be stored in `Payment Ledger`. This is so that payment reconciliation process only requires update on this ledger.
### Key Fields
| Field | Description |
|----------------------|----------------------------------|
| `account_type` | Receivable/Payable |
| `account` | Accounting head |
| `party` | Party Name |
| `voucher_no` | Voucher No |
| `against_voucher_no` | Linked voucher(secondary effect) |
| `amount` | can be +ve/-ve |
### Design
`debit` and `credit` have been replaced with `account_type` and `amount`. `against_voucher_no` is populated for all entries. So, outstanding amount can be calculated by summing up amount only using `against_voucher_no`.
Ex:
1. Consider an invoice for ₹100 and a partial payment of ₹80 against that invoice. Payment Ledger will have following entries.
| voucher_no | against_voucher_no | amount |
|------------|--------------------|--------|
| SINV-01 | SINV-01 | 100 |
| PAY-01 | SINV-01 | -80 |
2. Reconcile a Credit Note against an invoice using a Journal Entry
An invoice for ₹100 partially reconciled against a credit of ₹70 using a Journal Entry. Payment Ledger will have the following entries.
| voucher_no | against_voucher_no | amount |
|------------|--------------------|--------|
| SINV-01 | SINV-01 | 100 |
| | | |
| CR-NOTE-01 | CR-NOTE-01 | -70 |
| | | |
| JE-01 | CR-NOTE-01 | +70 |
| JE-01 | SINV-01 | -70 |
All accounting entries are stored in the `General Ledger`

View File

@@ -10,50 +10,45 @@ from frappe.contacts.doctype.address.address import (
class ERPNextAddress(Address):
def validate(self):
self.validate_reference()
self.update_compnay_address()
super().validate()
super(ERPNextAddress, self).validate()
def link_address(self):
"""Link address based on owner"""
if self.is_your_company_address:
return
return super().link_address()
def update_compnay_address(self):
for link in self.get("links"):
if link.link_doctype == "Company":
self.is_your_company_address = 1
return super(ERPNextAddress, self).link_address()
def validate_reference(self):
if self.is_your_company_address and not [row for row in self.links if row.link_doctype == "Company"]:
frappe.throw(
_(
"Address needs to be linked to a Company. Please add a row for Company in the Links table."
),
title=_("Company Not Linked"),
)
if self.is_your_company_address and not [
row for row in self.links if row.link_doctype == "Company"
]:
frappe.throw(_("Address needs to be linked to a Company. Please add a row for Company in the Links table."),
title=_("Company Not Linked"))
def on_update(self):
"""
After Address is updated, update the related 'Primary Address' on Customer.
"""
address_display = get_address_display(self.as_dict())
filters = {"customer_primary_address": self.name}
filters = {
"customer_primary_address": self.name
}
customers = frappe.db.get_all("Customer", filters=filters, as_list=True)
for customer_name in customers:
frappe.db.set_value("Customer", customer_name[0], "primary_address", address_display)
@frappe.whitelist()
def get_shipping_address(company, address=None):
def get_shipping_address(company, address = None):
filters = [
["Dynamic Link", "link_doctype", "=", "Company"],
["Dynamic Link", "link_name", "=", company],
["Address", "is_your_company_address", "=", 1],
["Address", "is_your_company_address", "=", 1]
]
fields = ["*"]
if address and frappe.db.get_value("Dynamic Link", {"parent": address, "link_name": company}):
if address and frappe.db.get_value('Dynamic Link',
{'parent': address, 'link_name': company}):
filters.append(["Address", "name", "=", address])
if not address:
filters.append(["Address", "is_shipping_address", "=", 1])

View File

@@ -4,19 +4,18 @@
"creation": "2020-07-17 11:25:34.593061",
"docstatus": 0,
"doctype": "Dashboard Chart",
"dynamic_filters_json": "{\"company\":\"frappe.defaults.get_user_default(\\\"Company\\\")\",\"from_fiscal_year\":\"erpnext.utils.get_fiscal_year()\",\"to_fiscal_year\":\"erpnext.utils.get_fiscal_year()\"}",
"dynamic_filters_json": "{\"company\":\"frappe.defaults.get_user_default(\\\"Company\\\")\",\"from_fiscal_year\":\"frappe.sys_defaults.fiscal_year\",\"to_fiscal_year\":\"frappe.sys_defaults.fiscal_year\"}",
"filters_json": "{\"period\":\"Monthly\",\"budget_against\":\"Cost Center\",\"show_cumulative\":0}",
"idx": 0,
"is_public": 1,
"is_standard": 1,
"modified": "2023-07-19 13:13:13.307073",
"modified": "2020-07-22 12:24:49.144210",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Budget Variance",
"number_of_groups": 0,
"owner": "Administrator",
"report_name": "Budget Variance Report",
"roles": [],
"timeseries": 0,
"type": "Bar",
"use_report_chart": 1,

View File

@@ -4,19 +4,18 @@
"creation": "2020-07-17 11:25:34.448572",
"docstatus": 0,
"doctype": "Dashboard Chart",
"dynamic_filters_json": "{\"company\":\"frappe.defaults.get_user_default(\\\"Company\\\")\",\"from_fiscal_year\":\"erpnext.utils.get_fiscal_year()\",\"to_fiscal_year\":\"erpnext.utils.get_fiscal_year()\"}",
"dynamic_filters_json": "{\"company\":\"frappe.defaults.get_user_default(\\\"Company\\\")\",\"from_fiscal_year\":\"frappe.sys_defaults.fiscal_year\",\"to_fiscal_year\":\"frappe.sys_defaults.fiscal_year\"}",
"filters_json": "{\"filter_based_on\":\"Fiscal Year\",\"period_start_date\":\"2020-04-01\",\"period_end_date\":\"2021-03-31\",\"periodicity\":\"Yearly\",\"include_default_book_entries\":1}",
"idx": 0,
"is_public": 1,
"is_standard": 1,
"modified": "2023-07-19 13:08:56.470390",
"modified": "2020-07-22 12:33:48.888943",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Profit and Loss",
"number_of_groups": 0,
"owner": "Administrator",
"report_name": "Profit and Loss Statement",
"roles": [],
"timeseries": 0,
"type": "Bar",
"use_report_chart": 1,

View File

@@ -1,4 +1,4 @@
frappe.provide("frappe.dashboards.chart_sources");
frappe.provide('frappe.dashboards.chart_sources');
frappe.dashboards.chart_sources["Account Balance Timeline"] = {
method: "erpnext.accounts.dashboard_chart_source.account_balance_timeline.account_balance_timeline.get",
@@ -9,14 +9,14 @@ frappe.dashboards.chart_sources["Account Balance Timeline"] = {
fieldtype: "Link",
options: "Company",
default: frappe.defaults.get_user_default("Company"),
reqd: 1,
reqd: 1
},
{
fieldname: "account",
label: __("Account"),
fieldtype: "Link",
options: "Account",
reqd: 1,
reqd: 1
},
],
]
};

View File

@@ -12,24 +12,15 @@ from frappe.utils.nestedset import get_descendants_of
@frappe.whitelist()
@cache_source
def get(
chart_name=None,
chart=None,
no_cache=None,
filters=None,
from_date=None,
to_date=None,
timespan=None,
time_interval=None,
heatmap_year=None,
):
def get(chart_name = None, chart = None, no_cache = None, filters = None, from_date = None,
to_date = None, timespan = None, time_interval = None, heatmap_year = None):
if chart_name:
chart = frappe.get_doc("Dashboard Chart", chart_name)
chart = frappe.get_doc('Dashboard Chart', chart_name)
else:
chart = frappe._dict(frappe.parse_json(chart))
timespan = chart.timespan
if chart.timespan == "Select Date Range":
if chart.timespan == 'Select Date Range':
from_date = chart.from_date
to_date = chart.to_date
@@ -37,26 +28,20 @@ def get(
filters = frappe.parse_json(filters) or frappe.parse_json(chart.filters_json)
account = filters.get("account")
filters.get("company")
company = filters.get("company")
if not account and chart_name:
frappe.throw(
_("Account is not set for the dashboard chart {0}").format(
get_link_to_form("Dashboard Chart", chart_name)
)
)
frappe.throw(_("Account is not set for the dashboard chart {0}")
.format(get_link_to_form("Dashboard Chart", chart_name)))
if not frappe.db.exists("Account", account) and chart_name:
frappe.throw(
_("Account {0} does not exists in the dashboard chart {1}").format(
account, get_link_to_form("Dashboard Chart", chart_name)
)
)
frappe.throw(_("Account {0} does not exists in the dashboard chart {1}")
.format(account, get_link_to_form("Dashboard Chart", chart_name)))
if not to_date:
to_date = nowdate()
if not from_date:
if timegrain in ("Monthly", "Quarterly"):
if timegrain in ('Monthly', 'Quarterly'):
from_date = get_from_date_from_timespan(to_date, timespan)
# fetch dates to plot
@@ -69,20 +54,23 @@ def get(
result = build_result(account, dates, gl_entries)
return {
"labels": [formatdate(r[0].strftime("%Y-%m-%d")) for r in result],
"datasets": [{"name": account, "values": [r[1] for r in result]}],
"labels": [formatdate(r[0].strftime('%Y-%m-%d')) for r in result],
"datasets": [{
"name": account,
"values": [r[1] for r in result]
}]
}
def build_result(account, dates, gl_entries):
result = [[getdate(date), 0.0] for date in dates]
root_type = frappe.get_cached_value("Account", account, "root_type")
root_type = frappe.db.get_value('Account', account, 'root_type')
# start with the first date
date_index = 0
# get balances in debit
for entry in gl_entries:
# entry date is after the current pointer, so move the pointer forward
while getdate(entry.posting_date) > result[date_index][0]:
date_index += 1
@@ -90,34 +78,30 @@ def build_result(account, dates, gl_entries):
result[date_index][1] += entry.debit - entry.credit
# if account type is credit, switch balances
if root_type not in ("Asset", "Expense"):
if root_type not in ('Asset', 'Expense'):
for r in result:
r[1] = -1 * r[1]
# for balance sheet accounts, the totals are cumulative
if root_type in ("Asset", "Liability", "Equity"):
if root_type in ('Asset', 'Liability', 'Equity'):
for i, r in enumerate(result):
if i > 0:
r[1] = r[1] + result[i - 1][1]
r[1] = r[1] + result[i-1][1]
return result
def get_gl_entries(account, to_date):
child_accounts = get_descendants_of("Account", account, ignore_permissions=True)
child_accounts = get_descendants_of('Account', account, ignore_permissions=True)
child_accounts.append(account)
return frappe.db.get_all(
"GL Entry",
fields=["posting_date", "debit", "credit"],
filters=[
dict(posting_date=("<", to_date)),
dict(account=("in", child_accounts)),
dict(voucher_type=("!=", "Period Closing Voucher")),
return frappe.db.get_all('GL Entry',
fields = ['posting_date', 'debit', 'credit'],
filters = [
dict(posting_date = ('<', to_date)),
dict(account = ('in', child_accounts)),
dict(voucher_type = ('!=', 'Period Closing Voucher'))
],
order_by="posting_date asc",
)
order_by = 'posting_date asc')
def get_dates_from_timegrain(from_date, to_date, timegrain):
days = months = years = 0

View File

@@ -1,3 +1,4 @@
import frappe
from frappe import _
from frappe.email import sendmail_to_system_managers
@@ -22,19 +23,20 @@ from erpnext.accounts.utils import get_account_currency
def validate_service_stop_date(doc):
"""Validates service_stop_date for Purchase Invoice and Sales Invoice"""
''' Validates service_stop_date for Purchase Invoice and Sales Invoice '''
enable_check = "enable_deferred_revenue" if doc.doctype == "Sales Invoice" else "enable_deferred_expense"
enable_check = "enable_deferred_revenue" \
if doc.doctype=="Sales Invoice" else "enable_deferred_expense"
old_stop_dates = {}
old_doc = frappe.db.get_all(f"{doc.doctype} Item", {"parent": doc.name}, ["name", "service_stop_date"])
old_doc = frappe.db.get_all("{0} Item".format(doc.doctype),
{"parent": doc.name}, ["name", "service_stop_date"])
for d in old_doc:
old_stop_dates[d.name] = d.service_stop_date or ""
for item in doc.items:
if not item.get(enable_check):
continue
if not item.get(enable_check): continue
if item.service_stop_date:
if date_diff(item.service_stop_date, item.service_start_date) < 0:
@@ -43,29 +45,21 @@ def validate_service_stop_date(doc):
if date_diff(item.service_stop_date, item.service_end_date) > 0:
frappe.throw(_("Service Stop Date cannot be after Service End Date"))
if (
old_stop_dates
and old_stop_dates.get(item.name)
and item.service_stop_date != old_stop_dates.get(item.name)
):
if old_stop_dates and old_stop_dates.get(item.name) and item.service_stop_date!=old_stop_dates.get(item.name):
frappe.throw(_("Cannot change Service Stop Date for item in row {0}").format(item.idx))
def build_conditions(process_type, account, company):
conditions = ""
deferred_account = (
"item.deferred_revenue_account" if process_type == "Income" else "item.deferred_expense_account"
)
conditions=''
deferred_account = "item.deferred_revenue_account" if process_type=="Income" else "item.deferred_expense_account"
if account:
conditions += f"AND {deferred_account}={frappe.db.escape(account)}"
conditions += "AND %s='%s'"%(deferred_account, account)
elif company:
conditions += f"AND p.company = {frappe.db.escape(company)}"
return conditions
def convert_deferred_expense_to_expense(deferred_process, start_date=None, end_date=None, conditions=""):
def convert_deferred_expense_to_expense(deferred_process, start_date=None, end_date=None, conditions=''):
# book the expense/income on the last day, but it will be trigger on the 1st of month at 12:00 AM
if not start_date:
@@ -74,17 +68,14 @@ def convert_deferred_expense_to_expense(deferred_process, start_date=None, end_d
end_date = add_days(today(), -1)
# check for the purchase invoice for which GL entries has to be done
invoices = frappe.db.sql_list(
f"""
invoices = frappe.db.sql_list('''
select distinct item.parent
from `tabPurchase Invoice Item` item, `tabPurchase Invoice` p
where item.service_start_date<=%s and item.service_end_date>=%s
and item.enable_deferred_expense = 1 and item.parent=p.name
and item.docstatus = 1 and ifnull(item.amount, 0) > 0
{conditions}
""",
(end_date, start_date),
) # nosec
{0}
'''.format(conditions), (end_date, start_date)) #nosec
# For each invoice, book deferred expense
for invoice in invoices:
@@ -94,8 +85,7 @@ def convert_deferred_expense_to_expense(deferred_process, start_date=None, end_d
if frappe.flags.deferred_accounting_error:
send_mail(deferred_process)
def convert_deferred_revenue_to_income(deferred_process, start_date=None, end_date=None, conditions=""):
def convert_deferred_revenue_to_income(deferred_process, start_date=None, end_date=None, conditions=''):
# book the expense/income on the last day, but it will be trigger on the 1st of month at 12:00 AM
if not start_date:
@@ -104,17 +94,14 @@ def convert_deferred_revenue_to_income(deferred_process, start_date=None, end_da
end_date = add_days(today(), -1)
# check for the sales invoice for which GL entries has to be done
invoices = frappe.db.sql_list(
f"""
invoices = frappe.db.sql_list('''
select distinct item.parent
from `tabSales Invoice Item` item, `tabSales Invoice` p
where item.service_start_date<=%s and item.service_end_date>=%s
and item.enable_deferred_revenue = 1 and item.parent=p.name
and item.docstatus = 1 and ifnull(item.amount, 0) > 0
{conditions}
""",
(end_date, start_date),
) # nosec
{0}
'''.format(conditions), (end_date, start_date)) #nosec
for invoice in invoices:
doc = frappe.get_doc("Sales Invoice", invoice)
@@ -123,53 +110,37 @@ def convert_deferred_revenue_to_income(deferred_process, start_date=None, end_da
if frappe.flags.deferred_accounting_error:
send_mail(deferred_process)
def get_booking_dates(doc, item, posting_date=None, prev_posting_date=None):
def get_booking_dates(doc, item, posting_date=None):
if not posting_date:
posting_date = add_days(today(), -1)
last_gl_entry = False
deferred_account = (
"deferred_revenue_account" if doc.doctype == "Sales Invoice" else "deferred_expense_account"
)
deferred_account = "deferred_revenue_account" if doc.doctype=="Sales Invoice" else "deferred_expense_account"
if not prev_posting_date:
prev_gl_entry = frappe.db.sql(
"""
select name, posting_date from `tabGL Entry` where company=%s and account=%s and
voucher_type=%s and voucher_no=%s and voucher_detail_no=%s
and is_cancelled = 0
order by posting_date desc limit 1
""",
(doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name),
as_dict=True,
)
prev_gl_entry = frappe.db.sql('''
select name, posting_date from `tabGL Entry` where company=%s and account=%s and
voucher_type=%s and voucher_no=%s and voucher_detail_no=%s
order by posting_date desc limit 1
''', (doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name), as_dict=True)
prev_gl_via_je = frappe.db.sql(
"""
SELECT p.name, p.posting_date FROM `tabJournal Entry` p, `tabJournal Entry Account` c
WHERE p.name = c.parent and p.company=%s and c.account=%s
and c.reference_type=%s and c.reference_name=%s
and c.reference_detail_no=%s and c.docstatus < 2 order by posting_date desc limit 1
""",
(doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name),
as_dict=True,
)
prev_gl_via_je = frappe.db.sql('''
SELECT p.name, p.posting_date FROM `tabJournal Entry` p, `tabJournal Entry Account` c
WHERE p.name = c.parent and p.company=%s and c.account=%s
and c.reference_type=%s and c.reference_name=%s
and c.reference_detail_no=%s and c.docstatus < 2 order by posting_date desc limit 1
''', (doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name), as_dict=True)
if prev_gl_via_je:
if (not prev_gl_entry) or (
prev_gl_entry and prev_gl_entry[0].posting_date < prev_gl_via_je[0].posting_date
):
prev_gl_entry = prev_gl_via_je
if prev_gl_entry:
start_date = getdate(add_days(prev_gl_entry[0].posting_date, 1))
else:
start_date = item.service_start_date
if prev_gl_via_je:
if (not prev_gl_entry) or (prev_gl_entry and
prev_gl_entry[0].posting_date < prev_gl_via_je[0].posting_date):
prev_gl_entry = prev_gl_via_je
if prev_gl_entry:
start_date = getdate(add_days(prev_gl_entry[0].posting_date, 1))
else:
start_date = getdate(add_days(prev_posting_date, 1))
start_date = item.service_start_date
end_date = get_last_day(start_date)
if end_date >= item.service_end_date:
end_date = item.service_end_date
@@ -186,88 +157,66 @@ def get_booking_dates(doc, item, posting_date=None, prev_posting_date=None):
else:
return None, None, None
def calculate_monthly_amount(
doc, item, last_gl_entry, start_date, end_date, total_days, total_booking_days, account_currency
):
def calculate_monthly_amount(doc, item, last_gl_entry, start_date, end_date, total_days, total_booking_days, account_currency):
amount, base_amount = 0, 0
if not last_gl_entry:
total_months = (
(item.service_end_date.year - item.service_start_date.year) * 12
+ (item.service_end_date.month - item.service_start_date.month)
+ 1
)
total_months = (item.service_end_date.year - item.service_start_date.year) * 12 + \
(item.service_end_date.month - item.service_start_date.month) + 1
prorate_factor = flt(date_diff(item.service_end_date, item.service_start_date)) / flt(
date_diff(get_last_day(item.service_end_date), get_first_day(item.service_start_date))
)
prorate_factor = flt(date_diff(item.service_end_date, item.service_start_date)) \
/ flt(date_diff(get_last_day(item.service_end_date), get_first_day(item.service_start_date)))
actual_months = rounded(total_months * prorate_factor, 1)
already_booked_amount, already_booked_amount_in_account_currency = get_already_booked_amount(
doc, item
)
already_booked_amount, already_booked_amount_in_account_currency = get_already_booked_amount(doc, item)
base_amount = flt(item.base_net_amount / actual_months, item.precision("base_net_amount"))
if base_amount + already_booked_amount > item.base_net_amount:
base_amount = item.base_net_amount - already_booked_amount
if account_currency == doc.company_currency:
if account_currency==doc.company_currency:
amount = base_amount
else:
amount = flt(item.net_amount / actual_months, item.precision("net_amount"))
amount = flt(item.net_amount/actual_months, item.precision("net_amount"))
if amount + already_booked_amount_in_account_currency > item.net_amount:
amount = item.net_amount - already_booked_amount_in_account_currency
if get_first_day(start_date) != start_date or get_last_day(end_date) != end_date:
partial_month = flt(date_diff(end_date, start_date)) / flt(
date_diff(get_last_day(end_date), get_first_day(start_date))
)
if not (get_first_day(start_date) == start_date and get_last_day(end_date) == end_date):
partial_month = flt(date_diff(end_date, start_date)) \
/ flt(date_diff(get_last_day(end_date), get_first_day(start_date)))
base_amount = rounded(partial_month, 1) * base_amount
amount = rounded(partial_month, 1) * amount
else:
already_booked_amount, already_booked_amount_in_account_currency = get_already_booked_amount(
doc, item
)
already_booked_amount, already_booked_amount_in_account_currency = get_already_booked_amount(doc, item)
base_amount = flt(item.base_net_amount - already_booked_amount, item.precision("base_net_amount"))
if account_currency == doc.company_currency:
if account_currency==doc.company_currency:
amount = base_amount
else:
amount = flt(
item.net_amount - already_booked_amount_in_account_currency, item.precision("net_amount")
)
amount = flt(item.net_amount - already_booked_amount_in_account_currency, item.precision("net_amount"))
return amount, base_amount
def calculate_amount(doc, item, last_gl_entry, total_days, total_booking_days, account_currency):
amount, base_amount = 0, 0
if not last_gl_entry:
base_amount = flt(
item.base_net_amount * total_booking_days / flt(total_days), item.precision("base_net_amount")
)
if account_currency == doc.company_currency:
base_amount = flt(item.base_net_amount*total_booking_days/flt(total_days), item.precision("base_net_amount"))
if account_currency==doc.company_currency:
amount = base_amount
else:
amount = flt(item.net_amount * total_booking_days / flt(total_days), item.precision("net_amount"))
amount = flt(item.net_amount*total_booking_days/flt(total_days), item.precision("net_amount"))
else:
already_booked_amount, already_booked_amount_in_account_currency = get_already_booked_amount(
doc, item
)
already_booked_amount, already_booked_amount_in_account_currency = get_already_booked_amount(doc, item)
base_amount = flt(item.base_net_amount - already_booked_amount, item.precision("base_net_amount"))
if account_currency == doc.company_currency:
if account_currency==doc.company_currency:
amount = base_amount
else:
amount = flt(
item.net_amount - already_booked_amount_in_account_currency, item.precision("net_amount")
)
amount = flt(item.net_amount - already_booked_amount_in_account_currency, item.precision("net_amount"))
return amount, base_amount
def get_already_booked_amount(doc, item):
if doc.doctype == "Sales Invoice":
total_credit_debit, total_credit_debit_currency = "debit", "debit_in_account_currency"
@@ -276,27 +225,20 @@ def get_already_booked_amount(doc, item):
total_credit_debit, total_credit_debit_currency = "credit", "credit_in_account_currency"
deferred_account = "deferred_expense_account"
gl_entries_details = frappe.db.sql(
"""
select sum({}) as total_credit, sum({}) as total_credit_in_account_currency, voucher_detail_no
gl_entries_details = frappe.db.sql('''
select sum({0}) as total_credit, sum({1}) as total_credit_in_account_currency, voucher_detail_no
from `tabGL Entry` where company=%s and account=%s and voucher_type=%s and voucher_no=%s and voucher_detail_no=%s
and is_cancelled = 0
group by voucher_detail_no
""".format(total_credit_debit, total_credit_debit_currency),
(doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name),
as_dict=True,
)
'''.format(total_credit_debit, total_credit_debit_currency),
(doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name), as_dict=True)
journal_entry_details = frappe.db.sql(
"""
SELECT sum(c.{}) as total_credit, sum(c.{}) as total_credit_in_account_currency, reference_detail_no
journal_entry_details = frappe.db.sql('''
SELECT sum(c.{0}) as total_credit, sum(c.{1}) as total_credit_in_account_currency, reference_detail_no
FROM `tabJournal Entry` p , `tabJournal Entry Account` c WHERE p.name = c.parent and
p.company = %s and c.account=%s and c.reference_type=%s and c.reference_name=%s and c.reference_detail_no=%s
and p.docstatus < 2 group by reference_detail_no
""".format(total_credit_debit, total_credit_debit_currency),
(doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name),
as_dict=True,
)
'''.format(total_credit_debit, total_credit_debit_currency),
(doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name), as_dict=True)
already_booked_amount = gl_entries_details[0].total_credit if gl_entries_details else 0
already_booked_amount += journal_entry_details[0].total_credit if journal_entry_details else 0
@@ -304,33 +246,20 @@ def get_already_booked_amount(doc, item):
if doc.currency == doc.company_currency:
already_booked_amount_in_account_currency = already_booked_amount
else:
already_booked_amount_in_account_currency = (
gl_entries_details[0].total_credit_in_account_currency if gl_entries_details else 0
)
already_booked_amount_in_account_currency += (
journal_entry_details[0].total_credit_in_account_currency if journal_entry_details else 0
)
already_booked_amount_in_account_currency = gl_entries_details[0].total_credit_in_account_currency if gl_entries_details else 0
already_booked_amount_in_account_currency += journal_entry_details[0].total_credit_in_account_currency if journal_entry_details else 0
return already_booked_amount, already_booked_amount_in_account_currency
def book_deferred_income_or_expense(doc, deferred_process, posting_date=None):
enable_check = "enable_deferred_revenue" if doc.doctype == "Sales Invoice" else "enable_deferred_expense"
enable_check = "enable_deferred_revenue" \
if doc.doctype=="Sales Invoice" else "enable_deferred_expense"
accounts_frozen_upto = frappe.get_single_value("Accounts Settings", "acc_frozen_upto")
accounts_frozen_upto = frappe.get_cached_value('Accounts Settings', 'None', 'acc_frozen_upto')
def _book_deferred_revenue_or_expense(
item,
via_journal_entry,
submit_journal_entry,
book_deferred_entries_based_on,
prev_posting_date=None,
):
start_date, end_date, last_gl_entry = get_booking_dates(
doc, item, posting_date=posting_date, prev_posting_date=prev_posting_date
)
if not (start_date and end_date):
return
def _book_deferred_revenue_or_expense(item, via_journal_entry, submit_journal_entry, book_deferred_entries_based_on):
start_date, end_date, last_gl_entry = get_booking_dates(doc, item, posting_date=posting_date)
if not (start_date and end_date): return
account_currency = get_account_currency(item.expense_account or item.income_account)
if doc.doctype == "Sales Invoice":
@@ -343,182 +272,107 @@ def book_deferred_income_or_expense(doc, deferred_process, posting_date=None):
total_days = date_diff(item.service_end_date, item.service_start_date) + 1
total_booking_days = date_diff(end_date, start_date) + 1
if book_deferred_entries_based_on == "Months":
amount, base_amount = calculate_monthly_amount(
doc,
item,
last_gl_entry,
start_date,
end_date,
total_days,
total_booking_days,
account_currency,
)
if book_deferred_entries_based_on == 'Months':
amount, base_amount = calculate_monthly_amount(doc, item, last_gl_entry,
start_date, end_date, total_days, total_booking_days, account_currency)
else:
amount, base_amount = calculate_amount(
doc, item, last_gl_entry, total_days, total_booking_days, account_currency
)
amount, base_amount = calculate_amount(doc, item, last_gl_entry,
total_days, total_booking_days, account_currency)
if not amount:
prev_posting_date = end_date
else:
gl_posting_date = end_date
prev_posting_date = None
# check if books nor frozen till endate:
if accounts_frozen_upto and getdate(end_date) <= getdate(accounts_frozen_upto):
gl_posting_date = get_last_day(add_days(accounts_frozen_upto, 1))
prev_posting_date = end_date
return
if via_journal_entry:
book_revenue_via_journal_entry(
doc,
credit_account,
debit_account,
amount,
base_amount,
gl_posting_date,
project,
account_currency,
item.cost_center,
item,
deferred_process,
submit_journal_entry,
)
else:
make_gl_entries(
doc,
credit_account,
debit_account,
against,
amount,
base_amount,
gl_posting_date,
project,
account_currency,
item.cost_center,
item,
deferred_process,
)
# check if books nor frozen till endate:
if getdate(end_date) >= getdate(accounts_frozen_upto):
end_date = get_last_day(add_days(accounts_frozen_upto, 1))
if via_journal_entry:
book_revenue_via_journal_entry(doc, credit_account, debit_account, against, amount,
base_amount, end_date, project, account_currency, item.cost_center, item, deferred_process, submit_journal_entry)
else:
make_gl_entries(doc, credit_account, debit_account, against,
amount, base_amount, end_date, project, account_currency, item.cost_center, item, deferred_process)
# Returned in case of any errors because it tries to submit the same record again and again in case of errors
if frappe.flags.deferred_accounting_error:
return
if getdate(end_date) < getdate(posting_date) and not last_gl_entry:
_book_deferred_revenue_or_expense(
item,
via_journal_entry,
submit_journal_entry,
book_deferred_entries_based_on,
prev_posting_date,
)
_book_deferred_revenue_or_expense(item, via_journal_entry, submit_journal_entry, book_deferred_entries_based_on)
via_journal_entry = cint(
frappe.db.get_singles_value("Accounts Settings", "book_deferred_entries_via_journal_entry")
)
submit_journal_entry = cint(frappe.db.get_singles_value("Accounts Settings", "submit_journal_entries"))
book_deferred_entries_based_on = frappe.db.get_singles_value(
"Accounts Settings", "book_deferred_entries_based_on"
)
via_journal_entry = cint(frappe.db.get_singles_value('Accounts Settings', 'book_deferred_entries_via_journal_entry'))
submit_journal_entry = cint(frappe.db.get_singles_value('Accounts Settings', 'submit_journal_entries'))
book_deferred_entries_based_on = frappe.db.get_singles_value('Accounts Settings', 'book_deferred_entries_based_on')
for item in doc.get("items"):
for item in doc.get('items'):
if item.get(enable_check):
_book_deferred_revenue_or_expense(
item, via_journal_entry, submit_journal_entry, book_deferred_entries_based_on
)
_book_deferred_revenue_or_expense(item, via_journal_entry, submit_journal_entry, book_deferred_entries_based_on)
def process_deferred_accounting(posting_date=None):
"""Converts deferred income/expense into income/expense
Executed via background jobs on every month end"""
''' Converts deferred income/expense into income/expense
Executed via background jobs on every month end '''
if not posting_date:
posting_date = today()
if not cint(
frappe.db.get_singles_value("Accounts Settings", "automatically_process_deferred_accounting_entry")
):
if not cint(frappe.db.get_singles_value('Accounts Settings', 'automatically_process_deferred_accounting_entry')):
return
start_date = add_months(today(), -1)
end_date = add_days(today(), -1)
companies = frappe.get_all("Company")
companies = frappe.get_all('Company')
for company in companies:
for record_type in ("Income", "Expense"):
doc = frappe.get_doc(
dict(
doctype="Process Deferred Accounting",
company=company.name,
posting_date=posting_date,
start_date=start_date,
end_date=end_date,
type=record_type,
)
)
for record_type in ('Income', 'Expense'):
doc = frappe.get_doc(dict(
doctype='Process Deferred Accounting',
company=company.name,
posting_date=posting_date,
start_date=start_date,
end_date=end_date,
type=record_type
))
doc.insert()
doc.submit()
def make_gl_entries(
doc,
credit_account,
debit_account,
against,
amount,
base_amount,
posting_date,
project,
account_currency,
cost_center,
item,
deferred_process=None,
):
def make_gl_entries(doc, credit_account, debit_account, against,
amount, base_amount, posting_date, project, account_currency, cost_center, item, deferred_process=None):
# GL Entry for crediting the amount in the deferred expense
from erpnext.accounts.general_ledger import make_gl_entries
if amount == 0:
return
if amount == 0: return
gl_entries = []
gl_entries.append(
doc.get_gl_dict(
{
"account": credit_account,
"against": against,
"credit": base_amount,
"credit_in_account_currency": amount,
"cost_center": cost_center,
"voucher_detail_no": item.name,
"posting_date": posting_date,
"project": project,
"against_voucher_type": "Process Deferred Accounting",
"against_voucher": deferred_process,
},
account_currency,
item=item,
)
doc.get_gl_dict({
"account": credit_account,
"against": against,
"credit": base_amount,
"credit_in_account_currency": amount,
"cost_center": cost_center,
"voucher_detail_no": item.name,
'posting_date': posting_date,
'project': project,
'against_voucher_type': 'Process Deferred Accounting',
'against_voucher': deferred_process
}, account_currency, item=item)
)
# GL Entry to debit the amount from the expense
gl_entries.append(
doc.get_gl_dict(
{
"account": debit_account,
"against": against,
"debit": base_amount,
"debit_in_account_currency": amount,
"cost_center": cost_center,
"voucher_detail_no": item.name,
"posting_date": posting_date,
"project": project,
"against_voucher_type": "Process Deferred Accounting",
"against_voucher": deferred_process,
},
account_currency,
item=item,
)
doc.get_gl_dict({
"account": debit_account,
"against": against,
"debit": base_amount,
"debit_in_account_currency": amount,
"cost_center": cost_center,
"voucher_detail_no": item.name,
'posting_date': posting_date,
'project': project,
'against_voucher_type': 'Process Deferred Accounting',
'against_voucher': deferred_process
}, account_currency, item=item)
)
if gl_entries:
@@ -526,79 +380,70 @@ def make_gl_entries(
make_gl_entries(gl_entries, cancel=(doc.docstatus == 2), merge_entries=True)
frappe.db.commit()
except Exception as e:
if frappe.in_test:
doc.log_error(f"Error while processing deferred accounting for Invoice {doc.name}")
if frappe.flags.in_test:
traceback = frappe.get_traceback()
frappe.log_error(title=_('Error while processing deferred accounting for Invoice {0}').format(doc.name), message=traceback)
raise e
else:
frappe.db.rollback()
doc.log_error(f"Error while processing deferred accounting for Invoice {doc.name}")
traceback = frappe.get_traceback()
frappe.log_error(title=_('Error while processing deferred accounting for Invoice {0}').format(doc.name), message=traceback)
frappe.flags.deferred_accounting_error = True
def send_mail(deferred_process):
title = _("Error while processing deferred accounting for {0}").format(deferred_process)
link = get_link_to_form("Process Deferred Accounting", deferred_process)
link = get_link_to_form('Process Deferred Accounting', deferred_process)
content = _("Deferred accounting failed for some invoices:") + "\n"
content += _(
"Please check Process Deferred Accounting {0} and submit manually after resolving errors."
).format(link)
content += _("Please check Process Deferred Accounting {0} and submit manually after resolving errors.").format(link)
sendmail_to_system_managers(title, content)
def book_revenue_via_journal_entry(doc, credit_account, debit_account, against,
amount, base_amount, posting_date, project, account_currency, cost_center, item,
deferred_process=None, submit='No'):
def book_revenue_via_journal_entry(
doc,
credit_account,
debit_account,
amount,
base_amount,
posting_date,
project,
account_currency,
cost_center,
item,
deferred_process=None,
submit="No",
):
if amount == 0:
return
if amount == 0: return
journal_entry = frappe.new_doc("Journal Entry")
journal_entry = frappe.new_doc('Journal Entry')
journal_entry.posting_date = posting_date
journal_entry.company = doc.company
journal_entry.voucher_type = "Deferred Revenue" if doc.doctype == "Sales Invoice" else "Deferred Expense"
journal_entry.process_deferred_accounting = deferred_process
journal_entry.voucher_type = 'Deferred Revenue' if doc.doctype == 'Sales Invoice' \
else 'Deferred Expense'
debit_entry = {
"account": credit_account,
"credit": base_amount,
"credit_in_account_currency": amount,
"account_currency": account_currency,
"reference_name": doc.name,
"reference_type": doc.doctype,
"reference_detail_no": item.name,
"cost_center": cost_center,
"project": project,
'account': credit_account,
'credit': base_amount,
'credit_in_account_currency': amount,
'account_currency': account_currency,
'reference_name': doc.name,
'reference_type': doc.doctype,
'reference_detail_no': item.name,
'cost_center': cost_center,
'project': project,
}
credit_entry = {
"account": debit_account,
"debit": base_amount,
"debit_in_account_currency": amount,
"account_currency": account_currency,
"reference_name": doc.name,
"reference_type": doc.doctype,
"reference_detail_no": item.name,
"cost_center": cost_center,
"project": project,
'account': debit_account,
'debit': base_amount,
'debit_in_account_currency': amount,
'account_currency': account_currency,
'reference_name': doc.name,
'reference_type': doc.doctype,
'reference_detail_no': item.name,
'cost_center': cost_center,
'project': project,
}
for dimension in get_accounting_dimensions():
debit_entry.update({dimension: item.get(dimension)})
debit_entry.update({
dimension: item.get(dimension)
})
credit_entry.update({dimension: item.get(dimension)})
credit_entry.update({
dimension: item.get(dimension)
})
journal_entry.append("accounts", debit_entry)
journal_entry.append("accounts", credit_entry)
journal_entry.append('accounts', debit_entry)
journal_entry.append('accounts', credit_entry)
try:
journal_entry.save()
@@ -609,25 +454,21 @@ def book_revenue_via_journal_entry(
frappe.db.commit()
except Exception:
frappe.db.rollback()
doc.log_error(f"Error while processing deferred accounting for Invoice {doc.name}")
traceback = frappe.get_traceback()
frappe.log_error(title=_('Error while processing deferred accounting for Invoice {0}').format(doc.name), message=traceback)
frappe.flags.deferred_accounting_error = True
def get_deferred_booking_accounts(doctype, voucher_detail_no, dr_or_cr):
if doctype == "Sales Invoice":
credit_account, debit_account = frappe.db.get_value(
"Sales Invoice Item",
{"name": voucher_detail_no},
["income_account", "deferred_revenue_account"],
)
else:
credit_account, debit_account = frappe.db.get_value(
"Purchase Invoice Item",
{"name": voucher_detail_no},
["deferred_expense_account", "expense_account"],
)
if dr_or_cr == "Debit":
if doctype == 'Sales Invoice':
credit_account, debit_account = frappe.db.get_value('Sales Invoice Item', {'name': voucher_detail_no},
['income_account', 'deferred_revenue_account'])
else:
credit_account, debit_account = frappe.db.get_value('Purchase Invoice Item', {'name': voucher_detail_no},
['deferred_expense_account', 'expense_account'])
if dr_or_cr == 'Debit':
return debit_account
else:
return credit_account

View File

@@ -1,31 +1,33 @@
// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
frappe.ui.form.on("Account", {
setup: function (frm) {
frm.add_fetch("parent_account", "report_type", "report_type");
frm.add_fetch("parent_account", "root_type", "root_type");
frappe.ui.form.on('Account', {
setup: function(frm) {
frm.add_fetch('parent_account', 'report_type', 'report_type');
frm.add_fetch('parent_account', 'root_type', 'root_type');
},
onload: function (frm) {
frm.set_query("parent_account", function (doc) {
onload: function(frm) {
frm.set_query('parent_account', function(doc) {
return {
filters: {
is_group: 1,
company: doc.company,
},
"is_group": 1,
"company": doc.company
}
};
});
},
refresh: function (frm) {
frm.toggle_display("account_name", frm.is_new());
refresh: function(frm) {
frm.toggle_display('account_name', frm.is_new());
// hide fields if group
frm.toggle_display(["tax_rate"], cint(frm.doc.is_group) == 0);
frm.toggle_display(['account_type', 'tax_rate'], cint(frm.doc.is_group) == 0);
frm.toggle_enable(["is_group", "company", "account_number"], frm.is_new());
// disable fields
frm.toggle_enable(['is_group', 'company'], false);
if (cint(frm.doc.is_group) == 0) {
frm.toggle_display("freeze_account", frm.doc.__onload && frm.doc.__onload.can_freeze_account);
frm.toggle_display('freeze_account', frm.doc.__onload
&& frm.doc.__onload.can_freeze_account);
}
// read-only for root accounts
@@ -36,147 +38,125 @@ frappe.ui.form.on("Account", {
} else {
// credit days and type if customer or supplier
frm.set_intro(null);
frm.trigger("account_type");
frm.trigger('account_type');
// show / hide convert buttons
frm.trigger("add_toolbar_buttons");
frm.trigger('add_toolbar_buttons');
}
if (frm.has_perm("write")) {
frm.add_custom_button(
__("Merge Account"),
function () {
frm.trigger("merge_account");
},
__("Actions")
);
frm.add_custom_button(
__("Update Account Name / Number"),
function () {
frm.trigger("update_account_number");
},
__("Actions")
);
if (frm.has_perm('write')) {
frm.add_custom_button(__('Merge Account'), function () {
frm.trigger("merge_account");
}, __('Actions'));
frm.add_custom_button(__('Update Account Name / Number'), function () {
frm.trigger("update_account_number");
}, __('Actions'));
}
}
},
account_type: function (frm) {
if (frm.doc.is_group == 0) {
frm.toggle_display(["tax_rate"], frm.doc.account_type == "Tax");
frm.toggle_display("warehouse", frm.doc.account_type == "Stock");
frm.toggle_display(['tax_rate'], frm.doc.account_type == 'Tax');
frm.toggle_display('warehouse', frm.doc.account_type == 'Stock');
}
},
add_toolbar_buttons: function (frm) {
frm.add_custom_button(
__("Chart of Accounts"),
() => {
frappe.set_route("Tree", "Account");
},
__("View")
);
add_toolbar_buttons: function(frm) {
frm.add_custom_button(__('Chart of Accounts'), () => {
frappe.set_route("Tree", "Account");
}, __('View'));
if (frm.doc.is_group == 1) {
frm.add_custom_button(
__("Convert to Non-Group"),
function () {
return frappe.call({
doc: frm.doc,
method: "convert_group_to_ledger",
callback: function () {
frm.refresh();
},
});
},
__("Actions")
);
} else if (cint(frm.doc.is_group) == 0 && frappe.boot.user.can_read.indexOf("GL Entry") !== -1) {
frm.add_custom_button(
__("General Ledger"),
function () {
frappe.route_options = {
account: frm.doc.name,
from_date: erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[1],
to_date: erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[2],
company: frm.doc.company,
};
frappe.set_route("query-report", "General Ledger");
},
__("View")
);
frm.add_custom_button(__('Convert to Non-Group'), function () {
return frappe.call({
doc: frm.doc,
method: 'convert_group_to_ledger',
callback: function() {
frm.refresh();
}
});
}, __('Actions'));
frm.add_custom_button(
__("Convert to Group"),
function () {
return frappe.call({
doc: frm.doc,
method: "convert_ledger_to_group",
callback: function () {
frm.refresh();
},
});
},
__("Actions")
);
} else if (cint(frm.doc.is_group) == 0
&& frappe.boot.user.can_read.indexOf("GL Entry") !== -1) {
frm.add_custom_button(__('General Ledger'), function () {
frappe.route_options = {
"account": frm.doc.name,
"from_date": frappe.sys_defaults.year_start_date,
"to_date": frappe.sys_defaults.year_end_date,
"company": frm.doc.company
};
frappe.set_route("query-report", "General Ledger");
}, __('View'));
frm.add_custom_button(__('Convert to Group'), function () {
return frappe.call({
doc: frm.doc,
method: 'convert_ledger_to_group',
callback: function() {
frm.refresh();
}
});
}, __('Actions'));
}
},
merge_account: function (frm) {
merge_account: function(frm) {
var d = new frappe.ui.Dialog({
title: __("Merge with Existing Account"),
title: __('Merge with Existing Account'),
fields: [
{
label: "Name",
fieldname: "name",
fieldtype: "Data",
reqd: 1,
default: frm.doc.name,
},
"label" : "Name",
"fieldname": "name",
"fieldtype": "Data",
"reqd": 1,
"default": frm.doc.name
}
],
primary_action: function () {
primary_action: function() {
var data = d.get_values();
frappe.call({
method: "erpnext.accounts.doctype.account.account.merge_account",
args: {
old: frm.doc.name,
new: data.name,
is_group: frm.doc.is_group,
root_type: frm.doc.root_type,
company: frm.doc.company
},
callback: function (r) {
if (!r.exc) {
if (r.message) {
callback: function(r) {
if(!r.exc) {
if(r.message) {
frappe.set_route("Form", "Account", r.message);
}
d.hide();
}
},
}
});
},
primary_action_label: __("Merge"),
primary_action_label: __('Merge')
});
d.show();
},
update_account_number: function (frm) {
update_account_number: function(frm) {
var d = new frappe.ui.Dialog({
title: __("Update Account Number / Name"),
title: __('Update Account Number / Name'),
fields: [
{
label: "Account Name",
fieldname: "account_name",
fieldtype: "Data",
reqd: 1,
default: frm.doc.account_name,
"label": "Account Name",
"fieldname": "account_name",
"fieldtype": "Data",
"reqd": 1,
"default": frm.doc.account_name
},
{
label: "Account Number",
fieldname: "account_number",
fieldtype: "Data",
default: frm.doc.account_number,
},
"label": "Account Number",
"fieldname": "account_number",
"fieldtype": "Data",
"default": frm.doc.account_number
}
],
primary_action: function () {
primary_action: function() {
var data = d.get_values();
if (
data.account_number === frm.doc.account_number &&
data.account_name === frm.doc.account_name
) {
if(data.account_number === frm.doc.account_number && data.account_name === frm.doc.account_name) {
d.hide();
return;
}
@@ -186,11 +166,11 @@ frappe.ui.form.on("Account", {
args: {
account_number: data.account_number,
account_name: data.account_name,
name: frm.doc.name,
name: frm.doc.name
},
callback: function (r) {
if (!r.exc) {
if (r.message) {
callback: function(r) {
if(!r.exc) {
if(r.message) {
frappe.set_route("Form", "Account", r.message);
} else {
frm.set_value("account_number", data.account_number);
@@ -198,11 +178,11 @@ frappe.ui.form.on("Account", {
}
d.hide();
}
},
}
});
},
primary_action_label: __("Update"),
primary_action_label: __('Update')
});
d.show();
},
}
});

View File

@@ -3,7 +3,6 @@
"allow_copy": 1,
"allow_import": 1,
"creation": "2013-01-30 12:49:46",
"default_view": "Tree",
"description": "Heads (or groups) against which Accounting Entries are made and balances are maintained.",
"doctype": "DocType",
"document_type": "Setup",
@@ -19,6 +18,7 @@
"root_type",
"report_type",
"account_currency",
"inter_company_account",
"column_break1",
"parent_account",
"account_type",
@@ -34,11 +34,15 @@
{
"fieldname": "properties",
"fieldtype": "Section Break",
"oldfieldtype": "Section Break"
"oldfieldtype": "Section Break",
"show_days": 1,
"show_seconds": 1
},
{
"fieldname": "column_break0",
"fieldtype": "Column Break",
"show_days": 1,
"show_seconds": 1,
"width": "50%"
},
{
@@ -49,24 +53,29 @@
"no_copy": 1,
"oldfieldname": "account_name",
"oldfieldtype": "Data",
"reqd": 1
"reqd": 1,
"show_days": 1,
"show_seconds": 1
},
{
"fieldname": "account_number",
"fieldtype": "Data",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Account Number"
"label": "Account Number",
"read_only": 1,
"show_days": 1,
"show_seconds": 1
},
{
"default": "0",
"fieldname": "is_group",
"fieldtype": "Check",
"label": "Is Group"
"label": "Is Group",
"show_days": 1,
"show_seconds": 1
},
{
"fetch_from": "parent_account.company",
"fetch_if_empty": 1,
"fieldname": "company",
"fieldtype": "Link",
"in_standard_filter": 1,
@@ -74,8 +83,11 @@
"oldfieldname": "company",
"oldfieldtype": "Link",
"options": "Company",
"read_only": 1,
"remember_last_selected_value": 1,
"reqd": 1
"reqd": 1,
"show_days": 1,
"show_seconds": 1
},
{
"fieldname": "root_type",
@@ -83,7 +95,9 @@
"in_standard_filter": 1,
"label": "Root Type",
"options": "\nAsset\nLiability\nIncome\nExpense\nEquity",
"read_only": 1
"read_only": 1,
"show_days": 1,
"show_seconds": 1
},
{
"fieldname": "report_type",
@@ -91,31 +105,46 @@
"in_standard_filter": 1,
"label": "Report Type",
"options": "\nBalance Sheet\nProfit and Loss",
"read_only": 1
"read_only": 1,
"show_days": 1,
"show_seconds": 1
},
{
"depends_on": "eval:doc.is_group==0",
"fieldname": "account_currency",
"fieldtype": "Link",
"label": "Currency",
"options": "Currency"
"options": "Currency",
"show_days": 1,
"show_seconds": 1
},
{
"default": "0",
"fieldname": "inter_company_account",
"fieldtype": "Check",
"label": "Inter Company Account",
"show_days": 1,
"show_seconds": 1
},
{
"fieldname": "column_break1",
"fieldtype": "Column Break",
"show_days": 1,
"show_seconds": 1,
"width": "50%"
},
{
"fieldname": "parent_account",
"fieldtype": "Link",
"ignore_user_permissions": 1,
"in_preview": 1,
"label": "Parent Account",
"oldfieldname": "parent_account",
"oldfieldtype": "Link",
"options": "Account",
"reqd": 1,
"search_index": 1
"search_index": 1,
"show_days": 1,
"show_seconds": 1
},
{
"description": "Setting Account Type helps in selecting this Account in transactions.",
@@ -125,16 +154,19 @@
"label": "Account Type",
"oldfieldname": "account_type",
"oldfieldtype": "Select",
"options": "\nAccumulated Depreciation\nAsset Received But Not Billed\nBank\nCash\nChargeable\nCapital Work in Progress\nCost of Goods Sold\nCurrent Asset\nCurrent Liability\nDepreciation\nDirect Expense\nDirect Income\nEquity\nExpense Account\nExpenses Included In Asset Valuation\nExpenses Included In Valuation\nFixed Asset\nIncome Account\nIndirect Expense\nIndirect Income\nLiability\nPayable\nReceivable\nRound Off\nRound Off for Opening\nStock\nStock Adjustment\nStock Received But Not Billed\nService Received But Not Billed\nTax\nTemporary",
"search_index": 1
"options": "\nAccumulated Depreciation\nAsset Received But Not Billed\nBank\nCash\nChargeable\nCapital Work in Progress\nCost of Goods Sold\nDepreciation\nEquity\nExpense Account\nExpenses Included In Asset Valuation\nExpenses Included In Valuation\nFixed Asset\nIncome Account\nPayable\nReceivable\nRound Off\nStock\nStock Adjustment\nStock Received But Not Billed\nService Received But Not Billed\nTax\nTemporary",
"show_days": 1,
"show_seconds": 1
},
{
"description": "Rate at which this tax is applied",
"fieldname": "tax_rate",
"fieldtype": "Float",
"label": "Tax Rate",
"label": "Rate",
"oldfieldname": "tax_rate",
"oldfieldtype": "Currency"
"oldfieldtype": "Currency",
"show_days": 1,
"show_seconds": 1
},
{
"description": "If the account is frozen, entries are allowed to restricted users.",
@@ -143,13 +175,17 @@
"label": "Frozen",
"oldfieldname": "freeze_account",
"oldfieldtype": "Select",
"options": "No\nYes"
"options": "No\nYes",
"show_days": 1,
"show_seconds": 1
},
{
"fieldname": "balance_must_be",
"fieldtype": "Select",
"label": "Balance must be",
"options": "\nDebit\nCredit"
"options": "\nDebit\nCredit",
"show_days": 1,
"show_seconds": 1
},
{
"fieldname": "lft",
@@ -158,7 +194,9 @@
"label": "Lft",
"print_hide": 1,
"read_only": 1,
"search_index": 1
"search_index": 1,
"show_days": 1,
"show_seconds": 1
},
{
"fieldname": "rgt",
@@ -167,7 +205,9 @@
"label": "Rgt",
"print_hide": 1,
"read_only": 1,
"search_index": 1
"search_index": 1,
"show_days": 1,
"show_seconds": 1
},
{
"fieldname": "old_parent",
@@ -175,27 +215,33 @@
"hidden": 1,
"label": "Old Parent",
"print_hide": 1,
"read_only": 1
"read_only": 1,
"show_days": 1,
"show_seconds": 1
},
{
"default": "0",
"depends_on": "eval:(doc.report_type == 'Profit and Loss' && !doc.is_group)",
"fieldname": "include_in_gross",
"fieldtype": "Check",
"label": "Include in gross"
"label": "Include in gross",
"show_days": 1,
"show_seconds": 1
},
{
"default": "0",
"fieldname": "disabled",
"fieldtype": "Check",
"label": "Disable"
"label": "Disable",
"show_days": 1,
"show_seconds": 1
}
],
"icon": "fa fa-money",
"idx": 1,
"is_tree": 1,
"links": [],
"modified": "2025-01-22 10:40:35.766017",
"modified": "2020-06-11 15:15:54.338622",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Account",
@@ -246,15 +292,14 @@
"read": 1,
"report": 1,
"role": "Accounts Manager",
"set_user_permissions": 1,
"share": 1,
"write": 1
}
],
"search_fields": "account_number",
"show_name_in_global_search": 1,
"show_preview_popup": 1,
"sort_field": "creation",
"sort_field": "modified",
"sort_order": "ASC",
"states": [],
"track_changes": 1
}

View File

@@ -4,110 +4,40 @@
import frappe
from frappe import _, throw
from frappe.utils import add_to_date, cint, cstr, pretty_date
from frappe.utils import cint, cstr
from frappe.utils.nestedset import NestedSet, get_ancestors_of, get_descendants_of
import erpnext
class RootNotEditable(frappe.ValidationError):
pass
class BalanceMismatchError(frappe.ValidationError):
pass
class InvalidAccountMergeError(frappe.ValidationError):
pass
class RootNotEditable(frappe.ValidationError): pass
class BalanceMismatchError(frappe.ValidationError): pass
class Account(NestedSet):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
account_currency: DF.Link | None
account_name: DF.Data
account_number: DF.Data | None
account_type: DF.Literal[
"",
"Accumulated Depreciation",
"Asset Received But Not Billed",
"Bank",
"Cash",
"Chargeable",
"Capital Work in Progress",
"Cost of Goods Sold",
"Current Asset",
"Current Liability",
"Depreciation",
"Direct Expense",
"Direct Income",
"Equity",
"Expense Account",
"Expenses Included In Asset Valuation",
"Expenses Included In Valuation",
"Fixed Asset",
"Income Account",
"Indirect Expense",
"Indirect Income",
"Liability",
"Payable",
"Receivable",
"Round Off",
"Round Off for Opening",
"Stock",
"Stock Adjustment",
"Stock Received But Not Billed",
"Service Received But Not Billed",
"Tax",
"Temporary",
]
balance_must_be: DF.Literal["", "Debit", "Credit"]
company: DF.Link
disabled: DF.Check
freeze_account: DF.Literal["No", "Yes"]
include_in_gross: DF.Check
is_group: DF.Check
lft: DF.Int
old_parent: DF.Data | None
parent_account: DF.Link
report_type: DF.Literal["", "Balance Sheet", "Profit and Loss"]
rgt: DF.Int
root_type: DF.Literal["", "Asset", "Liability", "Income", "Expense", "Equity"]
tax_rate: DF.Float
# end: auto-generated types
nsm_parent_field = "parent_account"
nsm_parent_field = 'parent_account'
def on_update(self):
if frappe.local.flags.ignore_update_nsm:
return
else:
super().on_update()
super(Account, self).on_update()
def onload(self):
frozen_accounts_modifier = frappe.get_single_value("Accounts Settings", "frozen_accounts_modifier")
frozen_accounts_modifier = frappe.db.get_value("Accounts Settings", "Accounts Settings",
"frozen_accounts_modifier")
if not frozen_accounts_modifier or frozen_accounts_modifier in frappe.get_roles():
self.set_onload("can_freeze_account", True)
def autoname(self):
from erpnext.accounts.utils import get_autoname_with_number
self.name = get_autoname_with_number(self.account_number, self.account_name, self.company)
self.name = get_autoname_with_number(self.account_number, self.account_name, None, self.company)
def validate(self):
from erpnext.accounts.utils import validate_field_number
if frappe.local.flags.allow_unverified_charts:
return
self.validate_parent()
self.validate_parent_child_account_type()
self.validate_root_details()
self.validate_account_number()
validate_field_number("Account", self.name, self.account_number, self.company, "account_number")
self.validate_group_or_ledger()
self.set_root_and_report_type()
self.validate_mandatory()
@@ -115,52 +45,26 @@ class Account(NestedSet):
self.validate_balance_must_be_debit_or_credit()
self.validate_account_currency()
self.validate_root_company_and_sync_account_to_children()
self.validate_receivable_payable_account_type()
def validate_parent_child_account_type(self):
if self.parent_account:
if self.account_type in [
"Direct Income",
"Indirect Income",
"Current Asset",
"Current Liability",
"Direct Expense",
"Indirect Expense",
]:
parent_account_type = frappe.db.get_value("Account", self.parent_account, ["account_type"])
if parent_account_type == self.account_type:
throw(_("Only Parent can be of type {0}").format(self.account_type))
def validate_parent(self):
"""Fetch Parent Details and validate parent account"""
if self.parent_account:
par = frappe.get_cached_value(
"Account", self.parent_account, ["name", "is_group", "company"], as_dict=1
)
par = frappe.db.get_value("Account", self.parent_account,
["name", "is_group", "company"], as_dict=1)
if not par:
throw(
_("Account {0}: Parent account {1} does not exist").format(self.name, self.parent_account)
)
throw(_("Account {0}: Parent account {1} does not exist").format(self.name, self.parent_account))
elif par.name == self.name:
throw(_("Account {0}: You can not assign itself as parent account").format(self.name))
elif not par.is_group:
throw(
_("Account {0}: Parent account {1} can not be a ledger").format(
self.name, self.parent_account
)
)
throw(_("Account {0}: Parent account {1} can not be a ledger").format(self.name, self.parent_account))
elif par.company != self.company:
throw(
_("Account {0}: Parent account {1} does not belong to company: {2}").format(
self.name, self.parent_account, self.company
)
)
throw(_("Account {0}: Parent account {1} does not belong to company: {2}")
.format(self.name, self.parent_account, self.company))
def set_root_and_report_type(self):
if self.parent_account:
par = frappe.get_cached_value(
"Account", self.parent_account, ["report_type", "root_type"], as_dict=1
)
par = frappe.db.get_value("Account", self.parent_account,
["report_type", "root_type"], as_dict=1)
if par.report_type:
self.report_type = par.report_type
@@ -168,50 +72,27 @@ class Account(NestedSet):
self.root_type = par.root_type
if self.is_group:
db_value = self.get_doc_before_save()
db_value = frappe.db.get_value("Account", self.name, ["report_type", "root_type"], as_dict=1)
if db_value:
if self.report_type != db_value.report_type:
frappe.db.sql(
"update `tabAccount` set report_type=%s where lft > %s and rgt < %s",
(self.report_type, self.lft, self.rgt),
)
frappe.db.sql("update `tabAccount` set report_type=%s where lft > %s and rgt < %s",
(self.report_type, self.lft, self.rgt))
if self.root_type != db_value.root_type:
frappe.db.sql(
"update `tabAccount` set root_type=%s where lft > %s and rgt < %s",
(self.root_type, self.lft, self.rgt),
)
frappe.db.sql("update `tabAccount` set root_type=%s where lft > %s and rgt < %s",
(self.root_type, self.lft, self.rgt))
if self.root_type and not self.report_type:
self.report_type = (
"Balance Sheet" if self.root_type in ("Asset", "Liability", "Equity") else "Profit and Loss"
)
def validate_receivable_payable_account_type(self):
doc_before_save = self.get_doc_before_save()
receivable_payable_types = ["Receivable", "Payable"]
if (
doc_before_save
and doc_before_save.account_type in receivable_payable_types
and doc_before_save.account_type != self.account_type
):
# check for ledger entries
if frappe.db.get_all("GL Entry", filters={"account": self.name, "is_cancelled": 0}, limit=1):
msg = _(
"There are ledger entries against this account. Changing {0} to non-{1} in live system will cause incorrect output in 'Accounts {2}' report"
).format(
frappe.bold(_("Account Type")), doc_before_save.account_type, doc_before_save.account_type
)
frappe.msgprint(msg)
self.add_comment("Comment", msg)
self.report_type = "Balance Sheet" \
if self.root_type in ("Asset", "Liability", "Equity") else "Profit and Loss"
def validate_root_details(self):
doc_before_save = self.get_doc_before_save()
if doc_before_save and not doc_before_save.parent_account:
throw(_("Root cannot be edited."), RootNotEditable)
# does not exists parent
if frappe.db.exists("Account", self.name):
if not frappe.db.get_value("Account", self.name, "parent_account"):
throw(_("Root cannot be edited."), RootNotEditable)
if not self.parent_account and not self.is_group:
throw(_("The root account {0} must be a group").format(frappe.bold(self.name)))
frappe.throw(_("The root account {0} must be a group").format(frappe.bold(self.name)))
def validate_root_company_and_sync_account_to_children(self):
# ignore validation while creating new compnay or while syncing to child companies
@@ -219,22 +100,17 @@ class Account(NestedSet):
return
ancestors = get_root_company(self.company)
if ancestors:
if frappe.get_cached_value(
"Company", self.company, "allow_account_creation_against_child_company"
):
if frappe.get_value("Company", self.company, "allow_account_creation_against_child_company"):
return
if not frappe.db.get_value(
"Account", {"account_name": self.account_name, "company": ancestors[0]}, "name"
):
if not frappe.db.get_value("Account",
{'account_name': self.account_name, 'company': ancestors[0]}, 'name'):
frappe.throw(_("Please add the account to root level Company - {}").format(ancestors[0]))
elif self.parent_account:
descendants = get_descendants_of("Company", self.company)
if not descendants:
return
descendants = get_descendants_of('Company', self.company)
if not descendants: return
parent_acc_name_map = {}
parent_acc_name, parent_acc_number = frappe.get_cached_value(
"Account", self.parent_account, ["account_name", "account_number"]
)
parent_acc_name, parent_acc_number = frappe.db.get_value('Account', self.parent_account, \
["account_name", "account_number"])
filters = {
"company": ["in", descendants],
"account_name": parent_acc_name,
@@ -242,141 +118,97 @@ class Account(NestedSet):
if parent_acc_number:
filters["account_number"] = parent_acc_number
for d in frappe.db.get_values(
"Account", filters=filters, fieldname=["company", "name"], as_dict=True
):
for d in frappe.db.get_values('Account', filters=filters, fieldname=["company", "name"], as_dict=True):
parent_acc_name_map[d["company"]] = d["name"]
if not parent_acc_name_map:
return
if not parent_acc_name_map: return
self.create_account_for_child_company(parent_acc_name_map, descendants, parent_acc_name)
def validate_group_or_ledger(self):
doc_before_save = self.get_doc_before_save()
if not doc_before_save or cint(doc_before_save.is_group) == cint(self.is_group):
if self.get("__islocal"):
return
if self.check_gle_exists():
throw(_("Account with existing transaction cannot be converted to ledger"))
elif self.is_group:
if self.account_type and not self.flags.exclude_account_type_check:
throw(_("Cannot covert to Group because Account Type is selected."))
elif self.check_if_child_exists():
throw(_("Account with child nodes cannot be set as ledger"))
existing_is_group = frappe.db.get_value("Account", self.name, "is_group")
if cint(self.is_group) != cint(existing_is_group):
if self.check_gle_exists():
throw(_("Account with existing transaction cannot be converted to ledger"))
elif self.is_group:
if self.account_type and not self.flags.exclude_account_type_check:
throw(_("Cannot covert to Group because Account Type is selected."))
elif self.check_if_child_exists():
throw(_("Account with child nodes cannot be set as ledger"))
def validate_frozen_accounts_modifier(self):
doc_before_save = self.get_doc_before_save()
if not doc_before_save or doc_before_save.freeze_account == self.freeze_account:
return
frozen_accounts_modifier = frappe.get_cached_value(
"Accounts Settings", "Accounts Settings", "frozen_accounts_modifier"
)
if not frozen_accounts_modifier or frozen_accounts_modifier not in frappe.get_roles():
throw(_("You are not authorized to set Frozen value"))
old_value = frappe.db.get_value("Account", self.name, "freeze_account")
if old_value and old_value != self.freeze_account:
frozen_accounts_modifier = frappe.db.get_value('Accounts Settings', None, 'frozen_accounts_modifier')
if not frozen_accounts_modifier or \
frozen_accounts_modifier not in frappe.get_roles():
throw(_("You are not authorized to set Frozen value"))
def validate_balance_must_be_debit_or_credit(self):
from erpnext.accounts.utils import get_balance_on
if not self.get("__islocal") and self.balance_must_be:
account_balance = get_balance_on(self.name)
if account_balance > 0 and self.balance_must_be == "Credit":
frappe.throw(
_(
"Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'"
)
)
frappe.throw(_("Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'"))
elif account_balance < 0 and self.balance_must_be == "Debit":
frappe.throw(
_(
"Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'"
)
)
frappe.throw(_("Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'"))
def validate_account_currency(self):
self.currency_explicitly_specified = True
if not self.account_currency:
self.account_currency = frappe.get_cached_value("Company", self.company, "default_currency")
self.currency_explicitly_specified = False
self.account_currency = frappe.get_cached_value('Company', self.company, "default_currency")
gl_currency = frappe.db.get_value("GL Entry", {"account": self.name}, "account_currency")
if gl_currency and self.account_currency != gl_currency:
elif self.account_currency != frappe.db.get_value("Account", self.name, "account_currency"):
if frappe.db.get_value("GL Entry", {"account": self.name}):
frappe.throw(_("Currency can not be changed after making entries using some other currency"))
def validate_account_number(self, account_number=None):
if not account_number:
account_number = self.account_number
if account_number:
account_with_same_number = frappe.db.get_value(
"Account",
{"account_number": account_number, "company": self.company, "name": ["!=", self.name]},
)
if account_with_same_number:
frappe.throw(
_("Account Number {0} already used in account {1}").format(
account_number, account_with_same_number
)
)
def create_account_for_child_company(self, parent_acc_name_map, descendants, parent_acc_name):
for company in descendants:
company_bold = frappe.bold(company)
parent_acc_name_bold = frappe.bold(parent_acc_name)
if not parent_acc_name_map.get(company):
frappe.throw(
_(
"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA"
).format(company_bold, parent_acc_name_bold),
title=_("Account Not Found"),
)
frappe.throw(_("While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA")
.format(company_bold, parent_acc_name_bold), title=_("Account Not Found"))
# validate if parent of child company account to be added is a group
if frappe.get_cached_value(
"Account", self.parent_account, "is_group"
) and not frappe.get_cached_value("Account", parent_acc_name_map[company], "is_group"):
msg = _(
"While creating account for Child Company {0}, parent account {1} found as a ledger account."
).format(company_bold, parent_acc_name_bold)
if (frappe.db.get_value("Account", self.parent_account, "is_group")
and not frappe.db.get_value("Account", parent_acc_name_map[company], "is_group")):
msg = _("While creating account for Child Company {0}, parent account {1} found as a ledger account.").format(company_bold, parent_acc_name_bold)
msg += "<br><br>"
msg += _(
"Please convert the parent account in corresponding child company to a group account."
)
msg += _("Please convert the parent account in corresponding child company to a group account.")
frappe.throw(msg, title=_("Invalid Parent Account"))
filters = {"account_name": self.account_name, "company": company}
filters = {
"account_name": self.account_name,
"company": company
}
if self.account_number:
filters["account_number"] = self.account_number
child_account = frappe.db.get_value("Account", filters, "name")
child_account = frappe.db.get_value("Account", filters, 'name')
if not child_account:
doc = frappe.copy_doc(self)
doc.flags.ignore_root_company_validation = True
doc.update(
{
"company": company,
# parent account's currency should be passed down to child account's curreny
# if currency explicitly specified by user, child will inherit. else, default currency will be used.
"account_currency": self.account_currency
if self.currency_explicitly_specified
else erpnext.get_company_currency(company),
"parent_account": parent_acc_name_map[company],
}
)
doc.update({
"company": company,
# parent account's currency should be passed down to child account's curreny
# if it is None, it picks it up from default company currency, which might be unintended
"account_currency": erpnext.get_company_currency(company),
"parent_account": parent_acc_name_map[company]
})
doc.save()
frappe.msgprint(_("Account {0} is added in the child company {1}").format(doc.name, company))
frappe.msgprint(_("Account {0} is added in the child company {1}")
.format(doc.name, company))
elif child_account:
# update the parent company's value in child companies
doc = frappe.get_doc("Account", child_account)
parent_value_changed = False
for field in ["account_type", "freeze_account", "balance_must_be"]:
for field in ['account_type', 'freeze_account', 'balance_must_be']:
if doc.get(field) != self.get(field):
parent_value_changed = True
doc.set(field, self.get(field))
@@ -411,11 +243,8 @@ class Account(NestedSet):
return frappe.db.get_value("GL Entry", {"account": self.name})
def check_if_child_exists(self):
return frappe.db.sql(
"""select name from `tabAccount` where parent_account = %s
and docstatus != 2""",
self.name,
)
return frappe.db.sql("""select name from `tabAccount` where parent_account = %s
and docstatus != 2""", self.name)
def validate_mandatory(self):
if not self.root_type:
@@ -429,96 +258,79 @@ class Account(NestedSet):
if self.check_gle_exists():
throw(_("Account with existing transaction can not be deleted"))
super().on_trash(True)
super(Account, self).on_trash(True)
@frappe.whitelist()
@frappe.validate_and_sanitize_search_inputs
def get_parent_account(doctype, txt, searchfield, start, page_len, filters):
return frappe.db.sql(
"""select name from tabAccount
where is_group = 1 and docstatus != 2 and company = {}
and {} like {} order by name limit {} offset {}""".format("%s", searchfield, "%s", "%s", "%s"),
(filters["company"], "%%%s%%" % txt, page_len, start),
as_list=1,
)
return frappe.db.sql("""select name from tabAccount
where is_group = 1 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)
def get_account_currency(account):
"""Helper function to get account currency"""
if not account:
return
def generator():
account_currency, company = frappe.get_cached_value(
"Account", account, ["account_currency", "company"]
)
account_currency, company = frappe.get_cached_value("Account", account, ["account_currency", "company"])
if not account_currency:
account_currency = frappe.get_cached_value("Company", company, "default_currency")
account_currency = frappe.get_cached_value('Company', company, "default_currency")
return account_currency
return frappe.local_cache("account_currency", account, generator)
def on_doctype_update():
frappe.db.add_index("Account", ["lft", "rgt"])
def get_account_autoname(account_number, account_name, company):
# first validate if company exists
company = frappe.get_cached_value("Company", company, ["abbr", "name"], as_dict=True)
company = frappe.get_cached_value('Company', company, ["abbr", "name"], as_dict=True)
if not company:
frappe.throw(_("Company {0} does not exist").format(company))
frappe.throw(_('Company {0} does not exist').format(company))
parts = [account_name.strip(), company.abbr]
if cstr(account_number).strip():
parts.insert(0, cstr(account_number).strip())
return " - ".join(parts)
return ' - '.join(parts)
def validate_account_number(name, account_number, company):
if account_number:
account_with_same_number = frappe.db.get_value("Account",
{"account_number": account_number, "company": company, "name": ["!=", name]})
if account_with_same_number:
frappe.throw(_("Account Number {0} already used in account {1}")
.format(account_number, account_with_same_number))
@frappe.whitelist()
def update_account_number(name, account_name, account_number=None, from_descendant=False):
_ensure_idle_system()
account = frappe.get_cached_doc("Account", name)
if not account:
return
account = frappe.db.get_value("Account", name, "company", as_dict=True)
if not account: return
old_acc_name, old_acc_number = account.account_name, account.account_number
old_acc_name, old_acc_number = frappe.db.get_value('Account', name, \
["account_name", "account_number"])
# check if account exists in parent company
ancestors = get_ancestors_of("Company", account.company)
allow_independent_account_creation = frappe.get_cached_value(
"Company", account.company, "allow_account_creation_against_child_company"
)
allow_independent_account_creation = frappe.get_value("Company", account.company, "allow_account_creation_against_child_company")
if ancestors and not allow_independent_account_creation:
for ancestor in ancestors:
old_name = frappe.db.get_value(
"Account",
{"account_number": old_acc_number, "account_name": old_acc_name, "company": ancestor},
"name",
)
if old_name and not from_descendant:
if frappe.db.get_value("Account", {'account_name': old_acc_name, 'company': ancestor}, 'name'):
# same account in parent company exists
allow_child_account_creation = _("Allow Account Creation Against Child Company")
message = _("Account {0} exists in parent company {1}.").format(
frappe.bold(old_acc_name), frappe.bold(ancestor)
)
message = _("Account {0} exists in parent company {1}.").format(frappe.bold(old_acc_name), frappe.bold(ancestor))
message += "<br>"
message += _("Renaming it is only allowed via parent company {0}, to avoid mismatch.").format(
frappe.bold(ancestor)
)
message += _("Renaming it is only allowed via parent company {0}, to avoid mismatch.").format(frappe.bold(ancestor))
message += "<br><br>"
message += _("To overrule this, enable '{0}' in company {1}").format(
allow_child_account_creation, frappe.bold(account.company)
)
message += _("To overrule this, enable '{0}' in company {1}").format(allow_child_account_creation, frappe.bold(account.company))
frappe.throw(message, title=_("Rename Not Allowed"))
account.validate_account_number(account_number)
validate_account_number(name, account_number, account.company)
if account_number:
frappe.db.set_value("Account", name, "account_number", account_number.strip())
else:
@@ -527,65 +339,42 @@ def update_account_number(name, account_name, account_number=None, from_descenda
if not from_descendant:
# Update and rename in child company accounts as well
descendants = get_descendants_of("Company", account.company)
descendants = get_descendants_of('Company', account.company)
if descendants:
sync_update_account_number_in_child(
descendants, old_acc_name, account_name, account_number, old_acc_number
)
sync_update_account_number_in_child(descendants, old_acc_name, account_name, account_number, old_acc_number)
new_name = get_account_autoname(account_number, account_name, account.company)
if name != new_name:
frappe.rename_doc("Account", name, new_name, force=1)
return new_name
@frappe.whitelist()
def merge_account(old, new):
_ensure_idle_system()
def merge_account(old, new, is_group, root_type, company):
# Validate properties before merging
new_account = frappe.get_cached_doc("Account", new)
old_account = frappe.get_cached_doc("Account", old)
if not new_account:
if not frappe.db.exists("Account", new):
throw(_("Account {0} does not exist").format(new))
if (
cint(new_account.is_group),
new_account.root_type,
new_account.company,
cstr(new_account.account_currency),
) != (
cint(old_account.is_group),
old_account.root_type,
old_account.company,
cstr(old_account.account_currency),
):
throw(
msg=_(
"""Merging is only possible if following properties are same in both records. Is Group, Root Type, Company and Account Currency"""
),
title=("Invalid Accounts"),
exc=InvalidAccountMergeError,
)
val = list(frappe.db.get_value("Account", new,
["is_group", "root_type", "company"]))
if old_account.is_group and new_account.parent_account == old:
new_account.db_set("parent_account", frappe.get_cached_value("Account", old, "parent_account"))
if val != [cint(is_group), root_type, company]:
throw(_("""Merging is only possible if following properties are same in both records. Is Group, Root Type, Company"""))
if is_group and frappe.db.get_value("Account", new, "parent_account") == old:
frappe.db.set_value("Account", new, "parent_account",
frappe.db.get_value("Account", old, "parent_account"))
frappe.rename_doc("Account", old, new, merge=1, force=1)
return new
@frappe.whitelist()
def get_root_company(company):
# return the topmost company in the hierarchy
ancestors = get_ancestors_of("Company", company, "lft asc")
ancestors = get_ancestors_of('Company', company, "lft asc")
return [ancestors[0]] if ancestors else []
def sync_update_account_number_in_child(
descendants, old_acc_name, account_name, account_number=None, old_acc_number=None
):
def sync_update_account_number_in_child(descendants, old_acc_name, account_name, account_number=None, old_acc_number=None):
filters = {
"company": ["in", descendants],
"account_name": old_acc_name,
@@ -593,33 +382,5 @@ def sync_update_account_number_in_child(
if old_acc_number:
filters["account_number"] = old_acc_number
for d in frappe.db.get_values("Account", filters=filters, fieldname=["company", "name"], as_dict=True):
update_account_number(d["name"], account_name, account_number, from_descendant=True)
def _ensure_idle_system():
# Don't allow renaming if accounting entries are actively being updated, there are two main reasons:
# 1. Correctness: It's next to impossible to ensure that renamed account is not being used *right now*.
# 2. Performance: Renaming requires locking out many tables entirely and severely degrades performance.
if frappe.in_test:
return
last_gl_update = None
try:
# We also lock inserts to GL entry table with for_update here.
last_gl_update = frappe.db.get_value("GL Entry", {}, "modified", for_update=True, wait=False)
except frappe.QueryTimeoutError:
# wait=False fails immediately if there's an active transaction.
last_gl_update = add_to_date(None, seconds=-1)
if not last_gl_update:
return
if last_gl_update > add_to_date(None, minutes=-5):
frappe.throw(
_(
"Last GL Entry update was done {}. This operation is not allowed while system is actively being used. Please wait for 5 minutes before retrying."
).format(pretty_date(last_gl_update)),
title=_("System In Use"),
)
for d in frappe.db.get_values('Account', filters=filters, fieldname=["company", "name"], as_dict=True):
update_account_number(d["name"], account_name, account_number, from_descendant=True)

View File

@@ -1,4 +1,4 @@
frappe.provide("frappe.treeview_settings");
frappe.provide("frappe.treeview_settings")
frappe.treeview_settings["Account"] = {
breadcrumb: "Accounts",
@@ -7,13 +7,12 @@ frappe.treeview_settings["Account"] = {
filters: [
{
fieldname: "company",
fieldtype: "Select",
fieldtype:"Select",
options: erpnext.utils.get_tree_options("company"),
label: __("Company"),
render_on_toolbar: true,
default: erpnext.utils.get_tree_default("company"),
on_change: function () {
var me = frappe.treeview_settings["Account"].treeview;
on_change: function() {
var me = frappe.treeview_settings['Account'].treeview;
var company = me.page.fields_dict.company.get_value();
if (!company) {
frappe.throw(__("Please set a Company"));
@@ -23,36 +22,30 @@ frappe.treeview_settings["Account"] = {
args: {
company: company,
},
callback: function (r) {
if (r.message) {
callback: function(r) {
if(r.message) {
let root_company = r.message.length ? r.message[0] : "";
me.page.fields_dict.root_company.set_value(root_company);
frappe.db.get_value(
"Company",
{ name: company },
"allow_account_creation_against_child_company",
(r) => {
frappe.flags.ignore_root_company_validation =
r.allow_account_creation_against_child_company;
}
);
frappe.db.get_value("Company", {"name": company}, "allow_account_creation_against_child_company", (r) => {
frappe.flags.ignore_root_company_validation = r.allow_account_creation_against_child_company;
});
}
},
}
});
},
}
},
{
fieldname: "root_company",
fieldtype: "Data",
fieldtype:"Data",
label: __("Root Company"),
hidden: true,
disable_onchange: true,
},
disable_onchange: true
}
],
root_label: "Accounts",
get_tree_nodes: "erpnext.accounts.utils.get_children",
on_get_node: function (nodes, deep = false) {
get_tree_nodes: 'erpnext.accounts.utils.get_children',
on_get_node: function(nodes, deep=false) {
if (frappe.boot.user.can_read.indexOf("GL Entry") == -1) return;
let accounts = [];
@@ -63,223 +56,147 @@ frappe.treeview_settings["Account"] = {
accounts = nodes;
}
frappe.db.get_single_value("Accounts Settings", "show_balance_in_coa").then((value) => {
if (value) {
const get_balances = frappe.call({
method: "erpnext.accounts.utils.get_account_balances",
args: {
accounts: accounts,
company: cur_tree.args.company,
},
});
const get_balances = frappe.call({
method: 'erpnext.accounts.utils.get_account_balances',
args: {
accounts: accounts,
company: cur_tree.args.company
},
});
get_balances.then((r) => {
if (!r.message || r.message.length == 0) return;
get_balances.then(r => {
if (!r.message || r.message.length == 0) return;
for (let account of r.message) {
const node = cur_tree.nodes && cur_tree.nodes[account.value];
if (!node || node.is_root) continue;
for (let account of r.message) {
// show Dr if positive since balance is calculated as debit - credit else show Cr
const balance = account.balance_in_account_currency || account.balance;
const dr_or_cr = balance > 0 ? __("Dr") : __("Cr");
const format = (value, currency) => format_currency(Math.abs(value), currency);
const node = cur_tree.nodes && cur_tree.nodes[account.value];
if (!node || node.is_root) continue;
if (account.balance !== undefined) {
node.parent && node.parent.find(".balance-area").remove();
$(
'<span class="balance-area pull-right">' +
(account.balance_in_account_currency
? format(
account.balance_in_account_currency,
account.account_currency
) + " / "
: "") +
format(account.balance, account.company_currency) +
" " +
dr_or_cr +
"</span>"
).insertBefore(node.$ul);
}
}
});
// show Dr if positive since balance is calculated as debit - credit else show Cr
const balance = account.balance_in_account_currency || account.balance;
const dr_or_cr = balance > 0 ? "Dr": "Cr";
const format = (value, currency) => format_currency(Math.abs(value), currency);
if (account.balance!==undefined) {
node.parent && node.parent.find('.balance-area').remove();
$('<span class="balance-area pull-right">'
+ (account.balance_in_account_currency ?
(format(account.balance_in_account_currency, account.account_currency) + " / ") : "")
+ format(account.balance, account.company_currency)
+ " " + dr_or_cr
+ '</span>').insertBefore(node.$ul);
}
}
});
},
add_tree_node: "erpnext.accounts.utils.add_ac",
menu_items: [
add_tree_node: 'erpnext.accounts.utils.add_ac',
menu_items:[
{
label: __("New Company"),
action: function () {
frappe.new_doc("Company", true);
},
condition: 'frappe.boot.user.can_create.indexOf("Company") !== -1',
},
label: __('New Company'),
action: function() { frappe.new_doc("Company", true) },
condition: 'frappe.boot.user.can_create.indexOf("Company") !== -1'
}
],
fields: [
{
fieldtype: "Data",
fieldname: "account_name",
label: __("New Account Name"),
reqd: true,
description: __(
"Name of new Account. Note: Please don't create accounts for Customers and Suppliers"
),
},
{
fieldtype: "Data",
fieldname: "account_number",
label: __("Account Number"),
description: __("Number of new Account, it will be included in the account name as a prefix"),
},
{
fieldtype: "Check",
fieldname: "is_group",
label: __("Is Group"),
description: __(
"Further accounts can be made under Groups, but entries can be made against non-Groups"
),
onchange: function () {
if (!this.value) {
this.layout.set_value("root_type", "");
}
},
},
{
fieldtype: "Select",
fieldname: "root_type",
label: __("Root Type"),
options: ["Asset", "Liability", "Equity", "Income", "Expense"].join("\n"),
depends_on: "eval:doc.is_group && !doc.parent_account",
},
{
fieldtype: "Select",
fieldname: "account_type",
label: __("Account Type"),
options: frappe.get_meta("Account").fields.filter((d) => d.fieldname == "account_type")[0]
.options,
description: __("Optional. This setting will be used to filter in various transactions."),
},
{
fieldtype: "Float",
fieldname: "tax_rate",
label: __("Tax Rate"),
depends_on: 'eval:doc.is_group==0&&doc.account_type=="Tax"',
},
{
fieldtype: "Link",
fieldname: "account_currency",
label: __("Currency"),
options: "Currency",
description: __("Optional. Sets company's default currency, if not specified."),
{fieldtype:'Data', fieldname:'account_name', label:__('New Account Name'), reqd:true,
description: __("Name of new Account. Note: Please don't create accounts for Customers and Suppliers")},
{fieldtype:'Data', fieldname:'account_number', label:__('Account Number'),
description: __("Number of new Account, it will be included in the account name as a prefix")},
{fieldtype:'Check', fieldname:'is_group', label:__('Is Group'),
description: __('Further accounts can be made under Groups, but entries can be made against non-Groups')},
{fieldtype:'Select', fieldname:'root_type', label:__('Root Type'),
options: ['Asset', 'Liability', 'Equity', 'Income', 'Expense'].join('\n'),
depends_on: 'eval:doc.is_group && !doc.parent_account'},
{fieldtype:'Select', fieldname:'account_type', label:__('Account Type'),
options: frappe.get_meta("Account").fields.filter(d => d.fieldname=='account_type')[0].options,
description: __("Optional. This setting will be used to filter in various transactions.")
},
{fieldtype:'Float', fieldname:'tax_rate', label:__('Tax Rate'),
depends_on: 'eval:doc.is_group==0&&doc.account_type=="Tax"'},
{fieldtype:'Link', fieldname:'account_currency', label:__('Currency'), options:"Currency",
description: __("Optional. Sets company's default currency, if not specified.")}
],
ignore_fields: ["parent_account"],
onload: function (treeview) {
frappe.treeview_settings["Account"].treeview = {};
$.extend(frappe.treeview_settings["Account"].treeview, treeview);
ignore_fields:["parent_account"],
onload: function(treeview) {
frappe.treeview_settings['Account'].treeview = {};
$.extend(frappe.treeview_settings['Account'].treeview, treeview);
function get_company() {
return treeview.page.fields_dict.company.get_value();
}
// tools
treeview.page.add_inner_button(
__("Chart of Cost Centers"),
function () {
frappe.set_route("Tree", "Cost Center", { company: get_company() });
},
__("View"),
"default",
true
);
treeview.page.add_inner_button(__("Chart of Cost Centers"), function() {
frappe.set_route('Tree', 'Cost Center', {company: get_company()});
}, __('View'));
treeview.page.add_inner_button(
__("Opening Invoice Creation Tool"),
function () {
frappe.set_route("Form", "Opening Invoice Creation Tool", { company: get_company() });
},
__("View"),
"default",
true
);
treeview.page.add_inner_button(__("Opening Invoice Creation Tool"), function() {
frappe.set_route('Form', 'Opening Invoice Creation Tool', {company: get_company()});
}, __('View'));
treeview.page.add_divider_to_button_group(__("View"));
treeview.page.add_inner_button(__("Period Closing Voucher"), function() {
frappe.set_route('List', 'Period Closing Voucher', {company: get_company()});
}, __('View'));
treeview.page.add_inner_button(__("Journal Entry"), function() {
frappe.new_doc('Journal Entry', {company: get_company()});
}, __('Create'));
treeview.page.add_inner_button(__("Company"), function() {
frappe.new_doc('Company');
}, __('Create'));
// financial statements
for (let report of [
"Trial Balance",
"General Ledger",
"Balance Sheet",
"Profit and Loss Statement",
"Cash Flow",
"Accounts Payable",
"Accounts Receivable",
]) {
treeview.page.add_inner_button(
__(report),
function () {
frappe.set_route("query-report", report, { company: get_company() });
},
__("View")
);
for (let report of ['Trial Balance', 'General Ledger', 'Balance Sheet',
'Profit and Loss Statement', 'Cash Flow Statement', 'Accounts Payable', 'Accounts Receivable']) {
treeview.page.add_inner_button(__(report), function() {
frappe.set_route('query-report', report, {company: get_company()});
}, __('Financial Statements'));
}
},
post_render: function (treeview) {
frappe.treeview_settings["Account"].treeview["tree"] = treeview.tree;
if (treeview.can_create) {
treeview.page.set_primary_action(
__("New"),
function () {
let root_company = treeview.page.fields_dict.root_company.get_value();
if (root_company) {
frappe.throw(__("Please add the account to root level Company - {0}"), [
root_company,
]);
} else {
treeview.new_node();
}
},
"add"
);
}
post_render: function(treeview) {
frappe.treeview_settings['Account'].treeview["tree"] = treeview.tree;
treeview.page.set_primary_action(__("New"), function() {
let root_company = treeview.page.fields_dict.root_company.get_value();
if(root_company) {
frappe.throw(__("Please add the account to root level Company - ") + root_company);
} else {
treeview.new_node();
}
}, "add");
},
toolbar: [
{
label: __("Add Child"),
condition: function (node) {
return (
frappe.boot.user.can_create.indexOf("Account") !== -1 &&
(!frappe.treeview_settings[
"Account"
].treeview.page.fields_dict.root_company.get_value() ||
frappe.flags.ignore_root_company_validation) &&
node.expandable &&
!node.hide_add
);
label:__("Add Child"),
condition: function(node) {
return frappe.boot.user.can_create.indexOf("Account") !== -1
&& (!frappe.treeview_settings['Account'].treeview.page.fields_dict.root_company.get_value()
|| frappe.flags.ignore_root_company_validation)
&& node.expandable && !node.hide_add;
},
click: function () {
var me = frappe.views.trees["Account"];
click: function() {
var me = frappe.views.trees['Account'];
me.new_node();
},
btnClass: "hidden-xs",
btnClass: "hidden-xs"
},
{
condition: function (node) {
return !node.root && frappe.boot.user.can_read.indexOf("GL Entry") !== -1;
condition: function(node) {
return !node.root && frappe.boot.user.can_read.indexOf("GL Entry") !== -1
},
label: __("View Ledger"),
click: function (node, btn) {
click: function(node, btn) {
frappe.route_options = {
account: node.label,
from_date: erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[1],
to_date: erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[2],
company:
frappe.treeview_settings["Account"].treeview.page.fields_dict.company.get_value(),
"account": node.label,
"from_date": frappe.sys_defaults.year_start_date,
"to_date": frappe.sys_defaults.year_end_date,
"company": frappe.treeview_settings['Account'].treeview.page.fields_dict.company.get_value()
};
frappe.set_route("query-report", "General Ledger");
},
btnClass: "hidden-xs",
},
btnClass: "hidden-xs"
}
],
extend_toolbar: true,
};
extend_toolbar: true
}

View File

@@ -7,58 +7,44 @@ import os
import frappe
from frappe.utils import cstr
from frappe.utils.nestedset import rebuild_tree
from six import iteritems
from unidecode import unidecode
def create_charts(
company, chart_template=None, existing_company=None, custom_chart=None, from_coa_importer=None
):
def create_charts(company, chart_template=None, existing_company=None, custom_chart=None, from_coa_importer=None):
chart = custom_chart or get_chart(chart_template, existing_company)
if chart:
accounts = []
def _import_accounts(children, parent, root_type, root_account=False):
for account_name, child in children.items():
for account_name, child in iteritems(children):
if root_account:
root_type = child.get("root_type")
if account_name not in [
"account_name",
"account_number",
"account_type",
"root_type",
"is_group",
"tax_rate",
"account_currency",
]:
if account_name not in ["account_name", "account_number", "account_type",
"root_type", "is_group", "tax_rate"]:
account_number = cstr(child.get("account_number")).strip()
account_name, account_name_in_db = add_suffix_if_duplicate(
account_name, account_number, accounts
)
account_name, account_name_in_db = add_suffix_if_duplicate(account_name,
account_number, accounts)
is_group = identify_is_group(child)
report_type = (
"Balance Sheet"
if root_type in ["Asset", "Liability", "Equity"]
report_type = "Balance Sheet" if root_type in ["Asset", "Liability", "Equity"] \
else "Profit and Loss"
)
account = frappe.get_doc(
{
"doctype": "Account",
"account_name": child.get("account_name") if from_coa_importer else account_name,
"company": company,
"parent_account": parent,
"is_group": is_group,
"root_type": root_type,
"report_type": report_type,
"account_number": account_number,
"account_type": child.get("account_type"),
"account_currency": child.get("account_currency")
or frappe.get_cached_value("Company", company, "default_currency"),
"tax_rate": child.get("tax_rate"),
}
)
account = frappe.get_doc({
"doctype": "Account",
"account_name": child.get('account_name') if from_coa_importer else account_name,
"company": company,
"parent_account": parent,
"is_group": is_group,
"root_type": root_type,
"report_type": report_type,
"account_number": account_number,
"account_type": child.get("account_type"),
"account_currency": child.get('account_currency') or frappe.db.get_value('Company', company, "default_currency"),
"tax_rate": child.get("tax_rate")
})
if root_account or frappe.local.flags.allow_unverified_charts:
account.flags.ignore_mandatory = True
@@ -75,13 +61,13 @@ def create_charts(
# after all accounts are already inserted.
frappe.local.flags.ignore_update_nsm = True
_import_accounts(chart, None, None, root_account=True)
rebuild_tree("Account")
rebuild_tree("Account", "parent_account")
frappe.local.flags.ignore_update_nsm = False
def add_suffix_if_duplicate(account_name, account_number, accounts):
if account_number:
account_name_in_db = unidecode(" - ".join([account_number, account_name.strip().lower()]))
account_name_in_db = unidecode(" - ".join([account_number,
account_name.strip().lower()]))
else:
account_name_in_db = unidecode(account_name.strip().lower())
@@ -91,32 +77,16 @@ def add_suffix_if_duplicate(account_name, account_number, accounts):
return account_name, account_name_in_db
def identify_is_group(child):
if child.get("is_group"):
is_group = child.get("is_group")
elif len(
set(child.keys())
- set(
[
"account_name",
"account_type",
"root_type",
"is_group",
"tax_rate",
"account_number",
"account_currency",
]
)
):
elif len(set(child.keys()) - set(["account_name", "account_type", "root_type", "is_group", "tax_rate", "account_number"])):
is_group = 1
else:
is_group = 0
return is_group
@frappe.whitelist()
def get_chart(chart_template, existing_company=None):
chart = {}
if existing_company:
@@ -126,13 +96,11 @@ def get_chart(chart_template, existing_company=None):
from erpnext.accounts.doctype.account.chart_of_accounts.verified import (
standard_chart_of_accounts,
)
return standard_chart_of_accounts.get()
elif chart_template == "Standard with Numbers":
from erpnext.accounts.doctype.account.chart_of_accounts.verified import (
standard_chart_of_accounts_with_account_number,
)
return standard_chart_of_accounts_with_account_number.get()
else:
folders = ("verified",)
@@ -143,12 +111,11 @@ def get_chart(chart_template, existing_company=None):
for fname in os.listdir(path):
fname = frappe.as_unicode(fname)
if fname.endswith(".json"):
with open(os.path.join(path, fname)) as f:
with open(os.path.join(path, fname), "r") as f:
chart = f.read()
if chart and json.loads(chart).get("name") == chart_template:
return json.loads(chart).get("tree")
@frappe.whitelist()
def get_charts_for_country(country, with_standard=False):
charts = []
@@ -156,12 +123,11 @@ def get_charts_for_country(country, with_standard=False):
def _get_chart_name(content):
if content:
content = json.loads(content)
if (
content and content.get("disabled", "No") == "No"
) or frappe.local.flags.allow_unverified_charts:
charts.append(content["name"])
if (content and content.get("disabled", "No") == "No") \
or frappe.local.flags.allow_unverified_charts:
charts.append(content["name"])
country_code = frappe.get_cached_value("Country", country, "code")
country_code = frappe.db.get_value("Country", country, "code")
if country_code:
folders = ("verified",)
if frappe.local.flags.allow_unverified_charts:
@@ -175,7 +141,7 @@ def get_charts_for_country(country, with_standard=False):
for fname in os.listdir(path):
fname = frappe.as_unicode(fname)
if (fname.startswith(country_code) or fname.startswith(country)) and fname.endswith(".json"):
with open(os.path.join(path, fname)) as f:
with open(os.path.join(path, fname), "r") as f:
_get_chart_name(f.read())
# if more than one charts, returned then add the standard
@@ -186,22 +152,11 @@ def get_charts_for_country(country, with_standard=False):
def get_account_tree_from_existing_company(existing_company):
all_accounts = frappe.get_all(
"Account",
filters={"company": existing_company},
fields=[
"name",
"account_name",
"parent_account",
"account_type",
"is_group",
"root_type",
"tax_rate",
"account_number",
"account_currency",
],
order_by="lft, rgt",
)
all_accounts = frappe.get_all('Account',
filters={'company': existing_company},
fields = ["name", "account_name", "parent_account", "account_type",
"is_group", "root_type", "tax_rate", "account_number"],
order_by="lft, rgt")
account_tree = {}
@@ -210,7 +165,6 @@ def get_account_tree_from_existing_company(existing_company):
build_account_tree(account_tree, None, all_accounts)
return account_tree
def build_account_tree(tree, parent, all_accounts):
# find children
parent_account = parent.name if parent else ""
@@ -233,43 +187,33 @@ def build_account_tree(tree, parent, all_accounts):
tree[child.account_name]["account_type"] = child.account_type
if child.tax_rate:
tree[child.account_name]["tax_rate"] = child.tax_rate
if child.account_currency:
tree[child.account_name]["account_currency"] = child.account_currency
if not parent:
tree[child.account_name]["root_type"] = child.root_type
# call recursively to build a subtree for current account
build_account_tree(tree[child.account_name], child, all_accounts)
@frappe.whitelist()
def validate_bank_account(coa, bank_account):
accounts = []
chart = get_chart(coa)
if chart:
def _get_account_names(account_master):
for account_name, child in account_master.items():
if account_name not in [
"account_number",
"account_type",
"root_type",
"is_group",
"tax_rate",
]:
for account_name, child in iteritems(account_master):
if account_name not in ["account_number", "account_type",
"root_type", "is_group", "tax_rate"]:
accounts.append(account_name)
_get_account_names(child)
_get_account_names(chart)
return bank_account in accounts
return (bank_account in accounts)
@frappe.whitelist()
def build_tree_from_json(chart_template, chart_data=None, from_coa_importer=False):
"""get chart template from its folder and parse the json to be rendered as tree"""
''' get chart template from its folder and parse the json to be rendered as tree '''
chart = chart_data or get_chart(chart_template)
# if no template selected, return as it is
@@ -277,34 +221,22 @@ def build_tree_from_json(chart_template, chart_data=None, from_coa_importer=Fals
return
accounts = []
def _import_accounts(children, parent):
"""recursively called to form a parent-child based list of dict from chart template"""
for account_name, child in children.items():
''' recursively called to form a parent-child based list of dict from chart template '''
for account_name, child in iteritems(children):
account = {}
if account_name in [
"account_name",
"account_number",
"account_type",
"root_type",
"is_group",
"tax_rate",
"account_currency",
]:
continue
if account_name in ["account_name", "account_number", "account_type",\
"root_type", "is_group", "tax_rate"]: continue
if from_coa_importer:
account_name = child["account_name"]
account_name = child['account_name']
account["parent_account"] = parent
account["expandable"] = True if identify_is_group(child) else False
account["value"] = (
(cstr(child.get("account_number")).strip() + " - " + account_name)
if child.get("account_number")
else account_name
)
account['parent_account'] = parent
account['expandable'] = True if identify_is_group(child) else False
account['value'] = (cstr(child.get('account_number')).strip() + ' - ' + account_name) \
if child.get('account_number') else account_name
accounts.append(account)
_import_accounts(child, account["value"])
_import_accounts(child, account['value'])
_import_accounts(chart, None)
return accounts

View File

@@ -0,0 +1,270 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
"""
Import chart of accounts from OpenERP sources
"""
import ast
import json
import os
from xml.etree import ElementTree as ET
import frappe
from frappe.utils.csvutils import read_csv_content
from six import iteritems
path = "/Users/nabinhait/projects/odoo/addons"
accounts = {}
charts = {}
all_account_types = []
all_roots = {}
def go():
global accounts, charts
default_account_types = get_default_account_types()
country_dirs = []
for basepath, folders, files in os.walk(path):
basename = os.path.basename(basepath)
if basename.startswith("l10n_"):
country_dirs.append(basename)
for country_dir in country_dirs:
accounts, charts = {}, {}
country_path = os.path.join(path, country_dir)
manifest = ast.literal_eval(open(os.path.join(country_path, "__openerp__.py")).read())
data_files = manifest.get("data", []) + manifest.get("init_xml", []) + \
manifest.get("update_xml", [])
files_path = [os.path.join(country_path, d) for d in data_files]
xml_roots = get_xml_roots(files_path)
csv_content = get_csv_contents(files_path)
prefix = country_dir if csv_content else None
account_types = get_account_types(xml_roots.get("account.account.type", []),
csv_content.get("account.account.type", []), prefix)
account_types.update(default_account_types)
if xml_roots:
make_maps_for_xml(xml_roots, account_types, country_dir)
if csv_content:
make_maps_for_csv(csv_content, account_types, country_dir)
make_account_trees()
make_charts()
create_all_roots_file()
def get_default_account_types():
default_types_root = []
default_types_root.append(ET.parse(os.path.join(path, "account", "data",
"data_account_type.xml")).getroot())
return get_account_types(default_types_root, None, prefix="account")
def get_xml_roots(files_path):
xml_roots = frappe._dict()
for filepath in files_path:
fname = os.path.basename(filepath)
if fname.endswith(".xml"):
tree = ET.parse(filepath)
root = tree.getroot()
for node in root[0].findall("record"):
if node.get("model") in ["account.account.template",
"account.chart.template", "account.account.type"]:
xml_roots.setdefault(node.get("model"), []).append(root)
break
return xml_roots
def get_csv_contents(files_path):
csv_content = {}
for filepath in files_path:
fname = os.path.basename(filepath)
for file_type in ["account.account.template", "account.account.type",
"account.chart.template"]:
if fname.startswith(file_type) and fname.endswith(".csv"):
with open(filepath, "r") as csvfile:
try:
csv_content.setdefault(file_type, [])\
.append(read_csv_content(csvfile.read()))
except Exception as e:
continue
return csv_content
def get_account_types(root_list, csv_content, prefix=None):
types = {}
account_type_map = {
'cash': 'Cash',
'bank': 'Bank',
'tr_cash': 'Cash',
'tr_bank': 'Bank',
'receivable': 'Receivable',
'tr_receivable': 'Receivable',
'account rec': 'Receivable',
'payable': 'Payable',
'tr_payable': 'Payable',
'equity': 'Equity',
'stocks': 'Stock',
'stock': 'Stock',
'tax': 'Tax',
'tr_tax': 'Tax',
'tax-out': 'Tax',
'tax-in': 'Tax',
'charges_personnel': 'Chargeable',
'fixed asset': 'Fixed Asset',
'cogs': 'Cost of Goods Sold',
}
for root in root_list:
for node in root[0].findall("record"):
if node.get("model")=="account.account.type":
data = {}
for field in node.findall("field"):
if field.get("name")=="code" and field.text.lower() != "none" \
and account_type_map.get(field.text):
data["account_type"] = account_type_map[field.text]
node_id = prefix + "." + node.get("id") if prefix else node.get("id")
types[node_id] = data
if csv_content and csv_content[0][0]=="id":
for row in csv_content[1:]:
row_dict = dict(zip(csv_content[0], row))
data = {}
if row_dict.get("code") and account_type_map.get(row_dict["code"]):
data["account_type"] = account_type_map[row_dict["code"]]
if data and data.get("id"):
node_id = prefix + "." + data.get("id") if prefix else data.get("id")
types[node_id] = data
return types
def make_maps_for_xml(xml_roots, account_types, country_dir):
"""make maps for `charts` and `accounts`"""
for model, root_list in iteritems(xml_roots):
for root in root_list:
for node in root[0].findall("record"):
if node.get("model")=="account.account.template":
data = {}
for field in node.findall("field"):
if field.get("name")=="name":
data["name"] = field.text
if field.get("name")=="parent_id":
parent_id = field.get("ref") or field.get("eval")
data["parent_id"] = parent_id
if field.get("name")=="user_type":
value = field.get("ref")
if account_types.get(value, {}).get("account_type"):
data["account_type"] = account_types[value]["account_type"]
if data["account_type"] not in all_account_types:
all_account_types.append(data["account_type"])
data["children"] = []
accounts[node.get("id")] = data
if node.get("model")=="account.chart.template":
data = {}
for field in node.findall("field"):
if field.get("name")=="name":
data["name"] = field.text
if field.get("name")=="account_root_id":
data["account_root_id"] = field.get("ref")
data["id"] = country_dir
charts.setdefault(node.get("id"), {}).update(data)
def make_maps_for_csv(csv_content, account_types, country_dir):
for content in csv_content.get("account.account.template", []):
for row in content[1:]:
data = dict(zip(content[0], row))
account = {
"name": data.get("name"),
"parent_id": data.get("parent_id:id") or data.get("parent_id/id"),
"children": []
}
user_type = data.get("user_type/id") or data.get("user_type:id")
if account_types.get(user_type, {}).get("account_type"):
account["account_type"] = account_types[user_type]["account_type"]
if account["account_type"] not in all_account_types:
all_account_types.append(account["account_type"])
accounts[data.get("id")] = account
if not account.get("parent_id") and data.get("chart_template_id:id"):
chart_id = data.get("chart_template_id:id")
charts.setdefault(chart_id, {}).update({"account_root_id": data.get("id")})
for content in csv_content.get("account.chart.template", []):
for row in content[1:]:
if row:
data = dict(zip(content[0], row))
charts.setdefault(data.get("id"), {}).update({
"account_root_id": data.get("account_root_id:id") or \
data.get("account_root_id/id"),
"name": data.get("name"),
"id": country_dir
})
def make_account_trees():
"""build tree hierarchy"""
for id in accounts.keys():
account = accounts[id]
if account.get("parent_id"):
if accounts.get(account["parent_id"]):
# accounts[account["parent_id"]]["children"].append(account)
accounts[account["parent_id"]][account["name"]] = account
del account["parent_id"]
del account["name"]
# remove empty children
for id in accounts.keys():
if "children" in accounts[id] and not accounts[id].get("children"):
del accounts[id]["children"]
def make_charts():
"""write chart files in app/setup/doctype/company/charts"""
for chart_id in charts:
src = charts[chart_id]
if not src.get("name") or not src.get("account_root_id"):
continue
if not src["account_root_id"] in accounts:
continue
filename = src["id"][5:] + "_" + chart_id
print("building " + filename)
chart = {}
chart["name"] = src["name"]
chart["country_code"] = src["id"][5:]
chart["tree"] = accounts[src["account_root_id"]]
for key, val in chart["tree"].items():
if key in ["name", "parent_id"]:
chart["tree"].pop(key)
if type(val) == dict:
val["root_type"] = ""
if chart:
fpath = os.path.join("erpnext", "erpnext", "accounts", "doctype", "account",
"chart_of_accounts", filename + ".json")
with open(fpath, "r") as chartfile:
old_content = chartfile.read()
if not old_content or (json.loads(old_content).get("is_active", "No") == "No" \
and json.loads(old_content).get("disabled", "No") == "No"):
with open(fpath, "w") as chartfile:
chartfile.write(json.dumps(chart, indent=4, sort_keys=True))
all_roots.setdefault(filename, chart["tree"].keys())
def create_all_roots_file():
with open('all_roots.txt', 'w') as f:
for filename, roots in sorted(all_roots.items()):
f.write(filename)
f.write('\n----------------------\n')
for r in sorted(roots):
f.write(r.encode('utf-8'))
f.write('\n')
f.write('\n\n\n')
if __name__=="__main__":
go()

View File

@@ -2,437 +2,397 @@
"country_code": "at",
"name": "Austria - Chart of Accounts",
"tree": {
"Klasse 0 Aktiva: Anlageverm\u00f6gen": {
"0100 Konzessionen ": {"account_type": "Fixed Asset"},
"0110 Patentrechte und Lizenzen ": {"account_type": "Fixed Asset"},
"0120 Datenverarbeitungsprogramme ": {"account_type": "Fixed Asset"},
"0130 Marken, Warenzeichen und Musterschutzrechte, sonstige Urheberrechte ": {"account_type": "Fixed Asset"},
"0140 Pacht- und Mietrechte ": {"account_type": "Fixed Asset"},
"0150 Bezugs- und ähnliche Rechte ": {"account_type": "Fixed Asset"},
"0160 Geschäfts-/Firmenwert ": {"account_type": "Fixed Asset"},
"0170 Umgründungsmehrwert ": {"account_type": "Fixed Asset"},
"0180 Geleistete Anzahlungen auf immaterielle Vermögensgegenstände": {"account_type": "Fixed Asset"},
"0190 Kumulierte Abschreibungen zu immateriellen Vermögensgegenständen ": {"account_type": "Fixed Asset"},
"0200 Unbebaute Grundstücke, soweit nicht landwirtschaftlich genutzt ": {"account_type": "Fixed Asset"},
"0210 Bebaute Grundstücke (Grundwert) ": {"account_type": "Fixed Asset"},
"0220 Landwirtschaftlich genutzte Grundstücke ": {"account_type": "Fixed Asset"},
"0230 Grundstücksgleiche Rechte ": {"account_type": "Fixed Asset"},
"0300 Betriebs- und Geschäftsgebäude auf eigenem Grund ": {"account_type": "Fixed Asset"},
"0310 Wohn- und Sozialgebäude auf eigenem Grund ": {"account_type": "Fixed Asset"},
"0320 Betriebs- und Geschäftsgebäude auf fremdem Grund ": {"account_type": "Fixed Asset"},
"0330 Wohn- und Sozialgebäude auf fremdem Grund ": {"account_type": "Fixed Asset"},
"0340 Grundstückseinrichtungen auf eigenem Grund ": {"account_type": "Fixed Asset"},
"0350 Grundstückseinrichtungen auf fremdem Grund ": {"account_type": "Fixed Asset"},
"0360 Bauliche Investitionen in fremden (gepachteten) Betriebs- und Geschäftsgebäuden": {"account_type": "Fixed Asset"},
"0370 Bauliche Investitionen in fremden (gepachteten) Wohn- und Sozialgebäuden": {"account_type": "Fixed Asset"},
"0390 Kumulierte Abschreibungen zu Grundstücken ": {"account_type": "Fixed Asset"},
"0400 Maschinen und Geräte ": {"account_type": "Fixed Asset"},
"0500 Maschinenwerkzeuge ": {"account_type": "Fixed Asset"},
"0510 Allgemeine Werkzeuge und Handwerkzeuge ": {"account_type": "Fixed Asset"},
"0520 Prototypen, Formen, Modelle ": {"account_type": "Fixed Asset"},
"0530 Andere Erzeugungshilfsmittel (auch Softwarewerkzeuge)": {"account_type": "Fixed Asset"},
"0540 Hebezeuge und Montageanlagen ": {"account_type": "Fixed Asset"},
"0550 Geringwertige Vermögensgegenstände, soweit im Erzeugungsprozess ": {"account_type": "Fixed Asset"},
"0560 Festwerte technische Anlagen und Maschinen ": {"account_type": "Fixed Asset"},
"0590 Kumulierte Abschreibungen zu technischen Anlagen und Maschinen ": {"account_type": "Fixed Asset"},
"0600 Betriebs- und Geschäftsausstattung, soweit nicht gesondert angeführt ": {"account_type": "Fixed Asset"},
"0610 Andere Anlagen, soweit nicht gesondert angeführt ": {"account_type": "Fixed Asset"},
"0620 Büromaschinen, EDV-Anlagen ": {"account_type": "Fixed Asset"},
"0630 PKW und Kombis ": {"account_type": "Fixed Asset"},
"0640 LKW ": {"account_type": "Fixed Asset"},
"0650 Andere Beförderungsmittel ": {"account_type": "Fixed Asset"},
"0660 Gebinde ": {"account_type": "Fixed Asset"},
"0670 Geringwertige Vermögensgegenstände, soweit nicht im Erzeugungssprozess verwendet": {"account_type": "Fixed Asset"},
"0680 Festwerte außer technische Anlagen und Maschinen ": {"account_type": "Fixed Asset"},
"0690 Kumulierte Abschreibungen zu anderen Anlagen, Betriebs- und Geschäftsausstattung": {"account_type": "Fixed Asset"},
"0700 Geleistete Anzahlungen auf Sachanlagen ": {"account_type": "Fixed Asset"},
"0710 Anlagen in Bau ": {"account_type": "Fixed Asset"},
"0790 Kumulierte Abschreibungen zu geleisteten Anzahlungen auf Sachanlagen ": {"account_type": "Fixed Asset"},
"0800 Anteile an verbundenen Unternehmen ": {"account_type": "Fixed Asset"},
"0810 Beteiligungen an Gemeinschaftsunternehmen ": {"account_type": "Fixed Asset"},
"0820 Beteiligungen an angeschlossenen (assoziierten) Unternehmen ": {"account_type": "Fixed Asset"},
"0830 Eigene Anteile, Anteile an herrschenden oder mit Mehrheit beteiligten ": {"account_type": "Fixed Asset"},
"0840 Sonstige Beteiligungen ": {"account_type": "Fixed Asset"},
"0850 Ausleihungen an verbundene Unternehmen ": {"account_type": "Fixed Asset"},
"0860 Ausleihungen an Unternehmen mit Beteiligungsverhältnis": {"account_type": "Fixed Asset"},
"0870 Ausleihungen an Gesellschafter ": {"account_type": "Fixed Asset"},
"0880 Sonstige Ausleihungen ": {"account_type": "Fixed Asset"},
"0890 Anteile an Kapitalgesellschaften ohne Beteiligungscharakter ": {"account_type": "Fixed Asset"},
"0900 Anteile an Personengesellschaften ohne Beteiligungscharakter ": {"account_type": "Fixed Asset"},
"0910 Genossenschaftsanteile ohne Beteiligungscharakter ": {"account_type": "Fixed Asset"},
"0920 Anteile an Investmentfonds ": {"account_type": "Fixed Asset"},
"0930 Festverzinsliche Wertpapiere des Anlagevermögens ": {"account_type": "Fixed Asset"},
"0980 Geleistete Anzahlungen auf Finanzanlagen ": {"account_type": "Fixed Asset"},
"0990 Kumulierte Abschreibungen zu Finanzanlagen ": {"account_type": "Fixed Asset"},
"root_type": "Asset"
"Summe Abschreibungen und Aufwendungen": {
"7010 bis 7080 Abschreibungen auf das Anlageverm\u00f6gen (ausgenommen Finanzanlagen)": {},
"7100 bis 7190 Sonstige Steuern": {
"account_type": "Tax"
},
"7200 bis 7290 Instandhaltung u. Reinigung durh Dritte, Entsorgung, Beleuchtung": {},
"7300 bis 7310 Transporte durch Dritte": {},
"7320 bis 7330 Kfz - Aufwand": {},
"7340 bis 7350 Reise- und Fahraufwand": {},
"7360 bis 7370 Tag- und N\u00e4chtigungsgelder": {},
"7380 bis 7390 Nachrichtenaufwand": {},
"7400 bis 7430 Miet- und Pachtaufwand": {},
"7440 bis 7470 Leasingaufwand": {},
"7480 bis 7490 Lizenzaufwand": {},
"7500 bis 7530 Aufwand f\u00fcr beigestelltes Personal": {},
"7540 bis 7570 Provisionen an Dritte": {},
"7580 bis 7590 Aufsichtsratsverg\u00fctungen": {},
"7610 bis 7620 Druckerzeugnisse und Vervielf\u00e4ltigungen": {},
"7650 bis 7680 Werbung und Repr\u00e4sentationen": {},
"7700 bis 7740 Versicherungen": {},
"7750 bis 7760 Beratungs- und Pr\u00fcfungsaufwand": {},
"7800 bis 7810 Schadensf\u00e4lle": {},
"7840 bis 7880 Verschiedene betriebliche Aufwendungen": {},
"7910 bis 7950 Aufwandsstellenrechung der Hersteller": {},
"Abschreibungen auf aktivierte Aufwendungen f\u00fcr das Ingangs. u. Erweitern des Betriebes": {},
"Abschreibungen vom Umlaufverm\u00f6gen, soweit diese die im Unternehmen \u00fcblichen Abschreibungen \u00fcbersteigen": {},
"Aufwandsstellenrechnung": {},
"Aus- und Fortbildung": {},
"Buchwert abgegangener Anlagen, ausgenommen Finanzanlagen": {},
"B\u00fcromaterial und Drucksorten": {},
"Fachliteratur und Zeitungen ": {},
"Herstellungskosten der zur Erzielung der Umsatzerl\u00f6se erbrachten Leistungen": {},
"Mitgliedsbeitr\u00e4ge": {},
"Skontoertr\u00e4ge auf sonstige betriebliche Aufwendungen": {},
"Sonstige betrieblichen Aufwendungen": {},
"Spenden und Trinkgelder": {},
"Spesen des Geldverkehrs": {},
"Verluste aus dem Abgang vom Anlageverm\u00f6gen, ausgenommen Finanzanlagen": {},
"Vertriebskosten": {},
"Verwaltungskosten": {},
"root_type": "Expense"
},
"Klasse 1 Aktiva: Vorr\u00e4te": {
"1000 Bezugsverrechnung": {"account_type": "Stock"},
"1100 Rohstoffe": {"account_type": "Stock"},
"1200 Bezogene Teile": {"account_type": "Stock"},
"1300 Hilfsstoffe": {"account_type": "Stock"},
"1350 Betriebsstoffe": {"account_type": "Stock"},
"1360 Vorrat Energietraeger": {"account_type": "Stock"},
"1400 Unfertige Erzeugnisse": {"account_type": "Stock"},
"1500 Fertige Erzeugnisse": {"account_type": "Stock"},
"1600 Handelswarenvorrat": {"account_type": "Stock Received But Not Billed"},
"1700 Noch nicht abrechenbare Leistungen": {"account_type": "Stock"},
"1800 Geleistete Anzahlungen": {"account_type": "Stock"},
"1900 Wertberichtigungen": {"account_type": "Stock"},
"root_type": "Asset"
"Summe Betriebliche Ertr\u00e4ge": {
"4400 bis 4490 Erl\u00f6sschm\u00e4lerungen": {},
"4500 bis 4570 Ver\u00e4nderungen des Bestandes an fertigen und unfertigen Erzeugn. sowie an noch nicht abrechenbaren Leistungen": {},
"4580 bis 4590 andere aktivierte Eigenleistungen": {},
"4600 bis 4620 Erl\u00f6se aus dem Abgang vom Anlageverm\u00f6gen, ausgen. Finanzanlagen": {},
"4630 bis 4650 Ertr\u00e4ge aus dem Abgang vom Anlageverm\u00f6gen, ausgen. Finanzanlagen": {},
"4660 bis 4670 Ertr\u00e4ge aus der Zuschreibung zum Anlageverm\u00f6gen, ausgen. Finanzanlagen": {},
"4700 bis 4790 Ertr\u00e4ge aus der Aufl\u00f6sung von R\u00fcckstellungen": {},
"4800 bis 4990 \u00dcbrige betriebliche Ertr\u00e4ge": {},
"Erl\u00f6se 0 % Ausfuhrlieferungen/Drittl\u00e4nder": {},
"Erl\u00f6se 10 %": {},
"Erl\u00f6se 20 %": {},
"Erl\u00f6se aus im Inland stpfl. EG Lieferungen 10 % USt": {},
"Erl\u00f6se aus im Inland stpfl. EG Lieferungen 20 % USt": {},
"Erl\u00f6se i.g. Lieferungen (stfr)": {},
"root_type": "Income"
},
"Klasse 3 Passiva: Verbindlichkeiten": {
"3000 Allgemeine Verbindlichkeiten (Schuld)": {"account_type": "Payable"},
"3010 R\u00fcckstellungen f\u00fcr Pensionen": {"account_type": "Payable"},
"3020 Steuerr\u00fcckstellungen": {"account_type": "Tax"},
"3041 Sonstige R\u00fcckstellungen": {"account_type": "Payable"},
"3110 Verbindlichkeiten gegen\u00fcber Bank": {"account_type": "Payable"},
"3150 Verbindlichkeiten Darlehen": {"account_type": "Payable"},
"3185 Verbindlichkeiten Kreditkarte": {"account_type": "Payable"},
"3380 Verbindlichkeiten aus der Annahme gezogener Wechsel u. d. Ausstellungen eigener Wechsel": {
"Summe Eigenkapital R\u00fccklagen Abschlusskonten": {
"9000 bis 9180 Gezeichnetes bzw. gewidmetes Kapital": {
"account_type": "Equity"
},
"9200 bis 9290 Kapitalr\u00fccklagen": {
"account_type": "Equity"
},
"9300 bis 9380 Gewinnr\u00fccklagen": {
"account_type": "Equity"
},
"9400 bis 9590 Bewertungsreserven uns sonst. unversteuerte R\u00fccklagen": {
"account_type": "Equity"
},
"9600 bis 9690 Privat und Verrechnungskonten bei Einzelunternehmen und Personengesellschaften": {},
"9700 bis 9790 Einlagen stiller Gesellschafter ": {},
"9900 bis 9999 Evidenzkonten": {},
"Bilanzgewinn (-verlust )": {
"account_type": "Equity"
},
"Er\u00f6ffnungsbilanz": {},
"Gewinn- und Verlustrechnung": {},
"Schlussbilanz": {},
"nicht eingeforderte ausstehende Einlagen": {
"account_type": "Equity"
},
"root_type": "Equity"
},
"Summe Finanzertr\u00e4ge und Aufwendungen": {
"8000 bis 8040 Ertr\u00e4ge aus Beteiligungen": {},
"8050 bis 8090 Ertr\u00e4ge aus anderen Wertpapieren und Ausleihungen des Finanzanlageverm\u00f6gens": {},
"8100 bis 8130 Sonstige Zinsen und \u00e4hnliche Ertr\u00e4ge": {},
"8220 bis 8250 Aufwendungen aus Beteiligungen": {},
"8260 bis 8270 Aufwendungen aus sonst. Fiananzanlagen und aus Wertpapieren des Umlaufverm\u00f6gens": {},
"8280 bis 8340 Zinsen und \u00e4hnliche Aufwendungem": {},
"8400 bis 8440 Au\u00dferordentliche Ertr\u00e4ge": {},
"8450 bis 8490 Au\u00dferordentliche Aufwendungen": {},
"8500 bis 8590 Steuern vom Einkommen und vom Ertrag": {
"account_type": "Tax"
},
"8600 bis 8690 Aufl\u00f6sung unversteuerten R\u00fccklagen": {},
"8700 bis 8740 Aufl\u00f6sung von Kapitalr\u00fccklagen": {},
"8750 bis 8790 Aufl\u00f6sung von Gewinnr\u00fccklagen": {},
"8800 bis 8890 Zuweisung von unversteuerten R\u00fccklagen": {},
"Buchwert abgegangener Beteiligungen": {},
"Buchwert abgegangener Wertpapiere des Umlaufverm\u00f6gens": {},
"Buchwert abgegangener sonstiger Finanzanlagen": {},
"Erl\u00f6se aus dem Abgang von Beteiligungen": {},
"Erl\u00f6se aus dem Abgang von Wertpapieren des Umlaufverm\u00f6gens": {},
"Erl\u00f6se aus dem Abgang von sonstigen Finanzanlagen": {},
"Ertr\u00e4ge aus dem Abgang von und der Zuschreibung zu Finanzanlagen": {},
"Ertr\u00e4ge aus dem Abgang von und der Zuschreibung zu Wertpapieren des Umlaufverm\u00f6gens": {},
"Gewinabfuhr bzw. Verlust\u00fcberrechnung aus Ergebnisabf\u00fchrungsvertr\u00e4gen": {},
"nicht ausgenutzte Lieferantenskonti": {},
"root_type": "Income"
},
"Summe Fremdkapital": {
"3020 bis 3030 Steuerr\u00fcckstellungen": {},
"3040 bis 3090 Sonstige R\u00fcckstellungen": {},
"3110 bis 3170 Verbindlichkeiten gegen\u00fcber Kredidinstituten": {},
"3180 bis 3190 Verbindlichkeiten gegen\u00fcber Finanzinstituten": {},
"3380 bis 3390 Verbindlichkeiten aus der Annahme gezogener Wechsel u. d. Ausstellungen eigener Wechsel": {
"account_type": "Payable"
},
"3400 Verbindlichkeiten gegen\u00fc. verb. Untern., Verbindl. gegen\u00fc. Untern., mit denen eine Beteiligungsverh\u00e4lnis besteht": {},
"3460 Verbindlichkeiten gegenueber Gesellschaftern": {"account_type": "Payable"},
"3470 Einlagen stiller Gesellschafter": {"account_type": "Payable"},
"3585 Verbindlichkeiten Lohnsteuer": {"account_type": "Tax"},
"3590 Verbindlichkeiten Kommunalabgaben": {"account_type": "Tax"},
"3595 Verbindlichkeiten Dienstgeberbeitrag": {"account_type": "Tax"},
"3600 Verbindlichkeiten Sozialversicherung": {"account_type": "Payable"},
"3640 Verbindlichkeiten Loehne und Gehaelter": {"account_type": "Payable"},
"3700 Sonstige Verbindlichkeiten": {"account_type": "Payable"},
"3900 Passive Rechnungsabgrenzungsposten": {"account_type": "Payable"},
"3100 Anleihen (einschlie\u00dflich konvertibler)": {"account_type": "Payable"},
"3200 Erhaltene Anzahlungen auf Bestellungen": {"account_type": "Payable"},
"3040 R\u00fcckstellungen f\u00fcr Abfertigung": {"account_type": "Payable"},
"3530 USt. \u00a719 (reverse charge)": {
"3400 bis 3470 Verbindlichkeiten gegen\u00fc. verb. Untern., Verbindl. gegen\u00fc. Untern., mit denen eine Beteiligungsverh\u00e4lnis besteht": {},
"3600 bis 3690 Verbindlichkeiten im Rahmen der sozialen Sicherheit": {},
"3700 bis 3890 \u00dcbrige sonstige Verbindlichkeiten": {},
"3900 bis 3990 Passive Rechnungsabgrenzungsposten": {},
"Anleihen (einschlie\u00dflich konvertibler)": {},
"Erhaltene Anzahlungenauf Bestellungen": {},
"R\u00fcckstellungen f\u00fcr Abfertigung": {},
"R\u00fcckstellungen f\u00fcr Pensionen": {},
"USt. \u00a719 /art (reverse charge)": {
"account_type": "Tax"
},
"3500 Verbindlichkeiten aus Umsatzsteuer": {"account_type": "Tax"},
"3580 Umsatzsteuer Zahllast": {
"Umsatzsteuer": {},
"Umsatzsteuer Zahllast": {
"account_type": "Tax"
},
"3510 Umsatzsteuer Inland 20%": {
"Umsatzsteuer aus i.g. Erwerb 10%": {
"account_type": "Tax"
},
"3515 Umsatzsteuer Inland 10%": {
"Umsatzsteuer aus i.g. Erwerb 20%": {
"account_type": "Tax"
},
"3520 Umsatzsteuer aus i.g. Erwerb 20%": {
"Umsatzsteuer aus i.g. Lieferungen 10%": {
"account_type": "Tax"
},
"3525 Umsatzsteuer aus i.g. Erwerb 10%": {
"Umsatzsteuer aus i.g. Lieferungen 20%": {
"account_type": "Tax"
},
"3560 Umsatzsteuer-Evidenzkonto f\u00fcr erhaltene Anzahlungen auf Bestellungen": {},
"3360 Verbindlichkeiten aus Lieferungen u. Leistungen EU": {
"Umsatzsteuer-Evidenzkonto f\u00fcr erhaltene Anzahlungen auf Bestellungen": {},
"Verbindlichkeiten aus Lieferungen u. Leistungen EU": {
"account_type": "Payable"
},
"3000 Verbindlichkeiten aus Lieferungen u. Leistungen Inland": {
"Verbindlichkeiten aus Lieferungen u. Leistungen Inland": {
"account_type": "Payable"
},
"3370 Verbindlichkeiten aus Lieferungen u. Leistungen sonst. Ausland": {
"Verbindlichkeiten aus Lieferungen u. Leistungen sonst. Ausland": {
"account_type": "Payable"
},
"3400 Verbindlichkeiten gegen\u00fcber verbundenen Unternehmen": {},
"3570 Verrechnung Finanzamt": {
"Verbindlichkeiten gegen\u00fcber Gesellschaften": {},
"Verrechnung Finanzamt": {
"account_type": "Tax"
},
"root_type": "Liability"
},
"Klasse 2 Aktiva: Umlaufverm\u00f6gen, Rechnungsabgrenzungen": {
"2030 Forderungen aus Lieferungen und Leistungen Inland (0% USt, umsatzsteuerfrei)": {
"Summe Kontoklasse 0 Anlageverm\u00f6gen": {
"44 bis 49 Sonstige Maschinen und maschinelle Anlagen": {},
"920 bis 930 Festverzinsliche Wertpapiere des Anlageverm\u00f6gens": {},
"940 bis 970 Sonstige Finanzanlagen, Wertrechte": {},
"Allgemeine Werkzeuge und Handwerkzeuge": {},
"Andere Bef\u00f6rderungsmittel": {},
"Andere Betriebs- und Gesch\u00e4ftsausstattung": {},
"Andere Erzeugungshilfsmittel": {},
"Anlagen im Bau": {},
"Anteile an Investmentfonds": {},
"Anteile an Kapitalgesellschaften ohne Beteiligungscharakter": {},
"Anteile an Personengesellschaften ohne Beteiligungscharakter": {},
"Anteile an verbundenen Unternehmen": {},
"Antriebsmaschinen": {},
"Aufwendungen f\u00fcs das Ingangssetzen u. Erweitern eines Betriebes": {},
"Ausleihungen an verbundene Unternehmen": {},
"Ausleihungen an verbundene Unternehmen, mit denen ein Beteiligungsverh\u00e4lnis besteht": {},
"Bauliche Investitionen in fremden (gepachteten) Betriebs- und Gesch\u00e4ftsgeb\u00e4uden": {},
"Bauliche Investitionen in fremden (gepachteten) Wohn- und Sozialgeb\u00e4uden": {},
"Bebaute Grundst\u00fccke (Grundwert)": {},
"Beheizungs- und Beleuchtungsanlagen": {},
"Beteiligungen an Gemeinschaftunternehmen": {},
"Beteiligungen an angeschlossenen (assoziierten) Unternehmen": {},
"Betriebs- und Gesch\u00e4ftsgeb\u00e4ude auf eigenem Grund": {},
"Betriebs- und Gesch\u00e4ftsgeb\u00e4ude auf fremdem Grund": {},
"B\u00fcromaschinen, EDV - Anlagen": {},
"Datenverarbeitungsprogramme": {},
"Energieversorgungsanlagen": {},
"Fertigungsmaschinen": {},
"Gebinde": {},
"Geleistete Anzahlungen": {},
"Genossenschaften ohne Beteiligungscharakter": {},
"Geringwertige Verm\u00f6gensgegenst\u00e4nde, soweit im Erzeugerprozess verwendet": {},
"Geringwertige Verm\u00f6gensgegenst\u00e4nde, soweit nicht im Erzeugungsprozess verwendet": {},
"Gesch\u00e4fts(Firmen)wert": {},
"Grundst\u00fcckseinrichtunten auf eigenem Grund": {},
"Grundst\u00fcckseinrichtunten auf fremdem Grund": {},
"Grundst\u00fccksgleiche Rechte": {},
"Hebezeuge und Montageanlagen": {},
"Konzessionen": {},
"Kumulierte Abschreibungen": {},
"LKW": {},
"Marken, Warenzeichen und Musterschutzrechte": {},
"Maschinenwerkzeuge": {},
"Nachrichten- und Kontrollanlagen": {},
"PKW": {},
"Pacht- und Mietrechte": {},
"Patentrechte und Lizenzen": {},
"Sonstige Ausleihungen": {},
"Sonstige Beteiligungen": {},
"Transportanlagen": {},
"Unbebaute Grundst\u00fccke": {},
"Vorrichtungen, Formen und Modelle": {},
"Wohn- und Sozialgeb\u00e4ude auf eigenem Grund": {},
"Wohn- und Sozialgeb\u00e4ude auf fremdem Grund": {},
"root_type": "Asset"
},
"Summe Personalaufwand": {
"6000 bis 6190 L\u00f6hne": {},
"6200 bis 6390 Geh\u00e4lter": {},
"6400 bis 6440 Aufwendungen f\u00fcr Abfertigungen": {},
"6450 bis 6490 Aufwendungen f\u00fcr Altersversorgung": {},
"6500 bis 6550 Gesetzlicher Sozialaufwand Arbeiter": {},
"6560 bis 6590 Gesetzlicher Sozialaufwand Angestellte": {},
"6600 bis 6650 Lohnabh\u00e4ngige Abgaben und Pflichtbeitr\u00e4gte": {},
"6660 bis 6690 Gehaltsabh\u00e4ngige Abgaben und Pflichtbeitr\u00e4gte": {},
"6700 bis 6890 Sonstige Sozialaufwendungen": {},
"Aufwandsstellenrechnung": {},
"root_type": "Expense"
},
"Summe Umlaufverm\u00f6gen": {
"2000 bis 2007 Forderungen aus Lief. und Leist. Inland": {
"account_type": "Receivable"
},
"2010 Forderungen aus Lieferungen und Leistungen Inland (10% USt, umsatzsteuerfrei)": {
"2100 bis 2120 Forderungen aus Lief. und Leist. EU": {
"account_type": "Receivable"
},
"2000 Forderungen aus Lieferungen und Leistungen Inland (20% USt, umsatzsteuerfrei)": {
"2150 bis 2170 Forderungen aus Lief. und Leist. Ausland": {
"account_type": "Receivable"
},
"2040 Forderungen aus Lieferungen und Leistungen Inland (sonstiger USt-Satz)": {
"2200 bis 2220 Forderungen gegen\u00fcber verbundenen Unternehmen": {
"account_type": "Receivable"
},
"2100 Forderungen aus Lieferungen und Leistungen EU": {
"2250 bis 2270 Forderungen gegen\u00fcber Unternehmen, mit denen ein Beteiligungsverh\u00e4ltnis besteht": {
"account_type": "Receivable"
},
"2150 Forderungen aus Lieferungen und Leistungen Ausland (Nicht-EU)": {
"2300 bis 2460 Sonstige Forderungen und Verm\u00f6gensgegenst\u00e4nde": {
"account_type": "Receivable"
},
"2200 Forderungen gegen\u00fcber verbundenen Unternehmen": {
"2630 bis 2670 Sonstige Wertpapiere": {
"account_type": "Receivable"
},
"2250 Forderungen gegen\u00fcber Unternehmen, mit denen ein Beteiligungsverh\u00e4ltnis besteht": {
"2750 bis 2770 Kassenbest\u00e4nde in Fremdw\u00e4hrung": {
"account_type": "Receivable"
},
"2300 Sonstige Forderungen und Verm\u00f6gensgegenst\u00e4nde": {
"Aktive Rechnungsabrenzungsposten": {
"account_type": "Receivable"
},
"2630 Sonstige Wertpapiere": {
"account_type": "Stock"
},
"2750 Kassenbest\u00e4nde in Fremdw\u00e4hrung": {
"account_type": "Cash"
},
"2900 Aktive Rechnungsabrenzungsposten": {
"Anteile an verbundenen Unternehmen": {
"account_type": "Receivable"
},
"2600 Anteile an verbundenen Unternehmen": {
"account_type": "Equity"
},
"2680 Besitzwechsel ohne Forderungen": {
"Bank / Guthaben bei Kreditinstituten": {
"account_type": "Receivable"
},
"2950 Aktiviertes Disagio": {
"Besitzwechsel ...": {
"account_type": "Receivable"
},
"2610 Eigene Anteile und Wertpapiere an mit Mehrheit beteiligten Unternehmen": {
"Disagio": {
"account_type": "Receivable"
},
"2570 Einfuhrumsatzsteuer (bezahlt)": {"account_type": "Tax"},
"2460 Eingeforderte aber noch nicht eingezahlte Einlagen": {
"Eigene Anteile (Wertpapiere)": {
"account_type": "Receivable"
},
"2180 Einzelwertberichtigungen zu Forderungen aus Lief. und Leist. Ausland": {
"Einfuhrumsatzsteuer (bezahlt)": {},
"Eingeforderte aber noch nicht eingezahlte Einlagen": {
"account_type": "Receivable"
},
"2130 Einzelwertberichtigungen zu Forderungen aus Lief. und Leist. EU": {
"Einzelwertberichtigungen zu Forderungen aus Lief. und Leist. Ausland": {
"account_type": "Receivable"
},
"2080 Einzelwertberichtigungen zu Forderungen aus Lief. und Leist. Inland ": {
"Einzelwertberichtigungen zu Forderungen aus Lief. und Leist. EU": {
"account_type": "Receivable"
},
"2270 Einzelwertberichtigungen zu Forderungen gegen\u00fcber Unternehmen mit denen ein Beteiligungsverh\u00e4ltnis besteht": {
"Einzelwertberichtigungen zu Forderungen aus Lief. und Leist. Inland ": {
"account_type": "Receivable"
},
"2230 Einzelwertberichtigungen zu Forderungen gegen\u00fcber verbundenen Unternehmen": {
"Einzelwertberichtigungen zu Forderungen gegen\u00fcber Unternehmen mit denen ein Beteiligungsverh\u00e4ltnis besteht": {
"account_type": "Receivable"
},
"2470 Einzelwertberichtigungen zu sonstigen Forderungen und Verm\u00f6gensgegenst\u00e4nden": {
"Einzelwertberichtigungen zu Forderungen gegen\u00fcber verbundenen Unternehmen": {
"account_type": "Receivable"
},
"2700 Kassenbestand": {
"account_type": "Cash"
},
"2190 Pauschalwertberichtigungen zu Forderungen aus Lief. und Leist. sonstiges Ausland": {
"Einzelwertberichtigungen zu sonstigen Forderungen und Verm\u00f6gensgegenst\u00e4nden": {
"account_type": "Receivable"
},
"2130 Pauschalwertberichtigungen zu Forderungen aus Lief. und Leist. EU": {
"Kassenbestand": {
"account_type": "Receivable"
},
"2100 Pauschalwertberichtigungen zu Forderungen aus Lief. und Leist. Inland ": {
"Pauschalwertberichtigungen zu Forderungen aus Lief. und Leist. Ausland": {
"account_type": "Receivable"
},
"2280 Pauschalwertberichtigungen zu Forderungen gegen\u00fcber Unternehmen mit denen ein Beteiligungsverh\u00e4ltnis besteht": {
"Pauschalwertberichtigungen zu Forderungen aus Lief. und Leist. EU": {
"account_type": "Receivable"
},
"2240 Pauschalwertberichtigungen zu Forderungen gegen\u00fcber verbundenen Unternehmen": {
"Pauschalwertberichtigungen zu Forderungen aus Lief. und Leist. Inland ": {
"account_type": "Receivable"
},
"2480 Pauschalwertberichtigungen zu sonstigen Forderungen und Verm\u00f6gensgegenst\u00e4nden": {
"Pauschalwertberichtigungen zu Forderungen gegen\u00fcber Unternehmen mit denen ein Beteiligungsverh\u00e4ltnis besteht": {
"account_type": "Receivable"
},
"2740 Postwertzeichen": {
"account_type": "Cash"
},
"2780 Schecks in Euro": {
"account_type": "Cash"
},
"2800 Guthaben bei Bank": {
"account_type": "Bank"
},
"2801 Guthaben bei Bank - Sparkonto": {
"account_type": "Bank"
},
"2810 Guthaben bei Paypal": {
"account_type": "Bank"
},
"2930 Mietvorauszahlungen": {
"Pauschalwertberichtigungen zu Forderungen gegen\u00fcber verbundenen Unternehmen": {
"account_type": "Receivable"
},
"2980 Abgrenzung latenter Steuern": {
"Pauschalwertberichtigungen zu sonstigen Forderungen und Verm\u00f6gensgegenst\u00e4nden": {
"account_type": "Receivable"
},
"2500 Vorsteuer": {
"Postwertzeichen": {
"account_type": "Receivable"
},
"2510 Vorsteuer Inland 10%": {
"Schecks in Inlandsw\u00e4hrung": {
"account_type": "Receivable"
},
"Sonstige Anteile": {
"account_type": "Receivable"
},
"Stempelmarken": {
"account_type": "Receivable"
},
"Steuerabgrenzung": {
"account_type": "Receivable"
},
"Unterschiedsbetrag gem. Abschnitt XII Pensionskassengesetz": {
"account_type": "Receivable"
},
"Unterschiedsbetrag zur gebotenen Pensionsr\u00fcckstellung": {
"account_type": "Receivable"
},
"Vorsteuer": {
"account_type": "Receivable"
},
"Vorsteuer aus ig. Erwerb 10%": {
"account_type": "Tax"
},
"2895 Schwebende Geldbewegugen": {
"account_type": "Bank"
},
"2513 Vorsteuer Inland 5%": {
"Vorsteuer aus ig. Erwerb 20%": {
"account_type": "Tax"
},
"2515 Vorsteuer Inland 20%": {
"Vorsteuer \u00a719/Art 19 ( reverse charge ) ": {
"account_type": "Tax"
},
"2520 Vorsteuer aus innergemeinschaftlichem Erwerb 10%": {
"account_type": "Tax"
},
"2525 Vorsteuer aus innergemeinschaftlichem Erwerb 20%": {
"account_type": "Tax"
},
"2530 Vorsteuer \u00a719/Art 19 ( reverse charge ) ": {
"account_type": "Tax"
},
"2690 Wertberichtigungen zu Wertpapieren und Anteilen": {
"Wertberichtigungen": {
"account_type": "Receivable"
},
"root_type": "Asset"
},
"Klasse 4: Betriebliche Erträge": {
"4000 Erlöse 20 %": {"account_type": "Income Account"},
"4020 Erl\u00f6se 0 % steuerbefreit": {"account_type": "Income Account"},
"4010 Erl\u00f6se 10 %": {"account_type": "Income Account"},
"4030 Erl\u00f6se 13 %": {"account_type": "Income Account"},
"4040 Erl\u00f6se 0 % innergemeinschaftliche Lieferungen": {"account_type": "Income Account"},
"4400 Erl\u00f6sreduktion 0 % steuerbefreit": {"account_type": "Expense Account"},
"4410 Erl\u00f6sreduktion 10 %": {"account_type": "Expense Account"},
"4420 Erl\u00f6sreduktion 20 %": {"account_type": "Expense Account"},
"4430 Erl\u00f6sreduktion 13 %": {"account_type": "Expense Account"},
"4440 Erl\u00f6sreduktion 0 % innergemeinschaftliche Lieferungen": {"account_type": "Expense Account"},
"4500 Ver\u00e4nderungen des Bestandes an fertigen und unfertigen Erzeugn. sowie an noch nicht abrechenbaren Leistungen": {"account_type": "Income Account"},
"4580 Aktivierte Eigenleistungen": {"account_type": "Income Account"},
"4600 Erl\u00f6se aus dem Abgang vom Anlageverm\u00f6gen, ausgen. Finanzanlagen": {"account_type": "Income Account"},
"4630 Ertr\u00e4ge aus dem Abgang vom Anlageverm\u00f6gen, ausgen. Finanzanlagen": {"account_type": "Income Account"},
"4660 Ertr\u00e4ge aus der Zuschreibung zum Anlageverm\u00f6gen, ausgen. Finanzanlagen": {"account_type": "Income Account"},
"4700 Ertr\u00e4ge aus der Aufl\u00f6sung von R\u00fcckstellungen": {"account_type": "Income Account"},
"4800 \u00dcbrige betriebliche Ertr\u00e4ge": {"account_type": "Income Account"},
"root_type": "Income"
"Summe Vorr\u00e4te": {
"1000 bis 1090 Bezugsverrechnung": {},
"1100 bis 1190 Rohstoffe": {},
"1200 bis 1290 Bezogene Teile": {},
"1300 bis 1340 Hilfsstoffe": {},
"1350 bis 1390 Betriebsstoffe": {},
"1400 bis 1490 Unfertige Erzeugniss": {},
"1500 bis 1590 Fertige Erzeugniss": {},
"1600 bis 1690 Waren": {},
"1700 bis 1790 Noch nicht abgerechenbare Leistungen": {},
"1900 bis 1990 Wertberichtigungen": {},
"geleistete Anzahlungen": {},
"root_type": "Asset"
},
"Klasse 5: Aufwand f\u00fcr Material und Leistungen": {
"5000 Einkauf Partnerleistungen": {"account_type": "Cost of Goods Sold"},
"5100 Verbrauch an Rohstoffen": {"account_type": "Cost of Goods Sold"},
"5200 Verbrauch von bezogenen Fertig- und Einzelteilen": {"account_type": "Cost of Goods Sold"},
"5300 Verbrauch von Hilfsstoffen": {"account_type": "Cost of Goods Sold"},
"5340 Verbrauch Verpackungsmaterial": {"account_type": "Cost of Goods Sold"},
"5470 Verbrauch von Kleinmaterial": {"account_type": "Cost of Goods Sold"},
"5450 Verbrauch von Reinigungsmaterial": {"account_type": "Cost of Goods Sold"},
"5400 Verbrauch von Betriebsstoffen": {"account_type": "Cost of Goods Sold"},
"5500 Verbrauch von Werkzeugen und anderen Erzeugungshilfsmittel": {"account_type": "Cost of Goods Sold"},
"5600 Verbrauch von Brenn- und Treibstoffen, Energie und Wasser": {"account_type": "Cost of Goods Sold"},
"5700 Bearbeitung durch Dritte": {"account_type": "Cost of Goods Sold"},
"5900 Aufwandsstellenrechnung Material": {"account_type": "Cost of Goods Sold"},
"5820 Skontoertr\u00e4ge (20% USt.)": {"account_type": "Income Account"},
"5810 Skontoertr\u00e4ge (10% USt.)": {"account_type": "Income Account"},
"5010 Handelswareneinkauf 10 %": {"account_type": "Cost of Goods Sold"},
"5020 Handelswareneinkauf 20 %": {"account_type": "Cost of Goods Sold"},
"5040 Handelswareneinkauf innergemeinschaftlicher Erwerb 10 % VSt/10 % USt": {"account_type": "Cost of Goods Sold"},
"5050 Handelswareneinkauf innergemeinschaftlicher Erwerb 20 % VSt/20 % USt": {"account_type": "Cost of Goods Sold"},
"5070 Handelswareneinkauf innergemeinschaftlicher Erwerb ohne Vorsteuerabzug und 10 % USt": {"account_type": "Cost of Goods Sold"},
"5080 Handelswareneinkauf innergemeinschaftlicher Erwerb ohne Vorsteuerabzug und 20 % USt": {"account_type": "Cost of Goods Sold"},
"Summe Wareneinsatz": {
"5100 bis 5190 Verbrauch an Rohstoffen": {},
"5200 bis 5290 Verbrauch von bezogenen Fertig- und Einzelteilen": {},
"5300 bis 5390 Verbrauch von Hilfsstoffen": {},
"5400 bis 5490 Verbrauch von Betriebsstoffen": {},
"5500 bis 5590 Verbrauch von Werkzeugen und anderen Erzeugungshilfsmittel": {},
"5600 bis 5690 Verbrauch von Brenn- und Treibstoffen, Energie und Wasser": {},
"5700 bis 5790 Sonstige bezogene Herstellungsleistungen": {},
"Aufwandsstellenrechnung": {},
"Skontoertr\u00e4ge auf Materialaufwand": {},
"Skontoertr\u00e4ge auf sonstige bezogene Herstellungsleistungen": {},
"Wareneinkauf 10 %": {},
"Wareneinkauf 20 %": {},
"Wareneinkauf igErwerb 10 % VSt/10 % USt": {},
"Wareneinkauf igErwerb 20 % VSt/20 % USt": {},
"Wareneinkauf igErwerb ohne Vorsteuerabzug und 10 % USt": {},
"Wareneinkauf igErwerb ohne Vorsteuerabzug und 20 % USt": {},
"root_type": "Expense"
},
"Klasse 6: Personalaufwand": {
"6000 L\u00f6hne": {"account_type": "Payable"},
"6200 Geh\u00e4lter": {"account_type": "Payable"},
"6400 Aufwendungen f\u00fcr Abfertigungen": {"account_type": "Payable"},
"6450 Aufwendungen f\u00fcr Altersversorgung": {"account_type": "Payable"},
"6500 Gesetzlicher Sozialaufwand Arbeiter": {"account_type": "Payable"},
"6560 Gesetzlicher Sozialaufwand Angestellte": {"account_type": "Payable"},
"6600 Lohnabh\u00e4ngige Abgaben und Pflichtbeitr\u00e4gte": {"account_type": "Payable"},
"6660 Gehaltsabh\u00e4ngige Abgaben und Pflichtbeitr\u00e4gte": {"account_type": "Payable"},
"6700 Sonstige Sozialaufwendungen": {"account_type": "Payable"},
"6900 Aufwandsstellenrechnung Personal": {"account_type": "Payable"},
"root_type": "Expense"
},
"Klasse 7: Abschreibungen und sonstige betriebliche Aufwendungen": {
"7010 Abschreibungen auf das Anlageverm\u00f6gen (ausgenommen Finanzanlagen)": {"account_type": "Depreciation"},
"7100 Sonstige Steuern und Geb\u00fchren": {"account_type": "Tax"},
"7200 Instandhaltung u. Reinigung durch Dritte, Entsorgung, Energie": {"account_type": "Expense Account"},
"7300 Transporte durch Dritte": {"account_type": "Expense Account"},
"7310 Fahrrad - Aufwand": {"account_type": "Expense Account"},
"7320 Kfz - Aufwand": {"account_type": "Expense Account"},
"7330 LKW - Aufwand": {"account_type": "Expense Account"},
"7340 Lastenrad - Aufwand": {"account_type": "Expense Account"},
"7350 Reise- und Fahraufwand": {"account_type": "Expense Account"},
"7360 Tag- und N\u00e4chtigungsgelder": {"account_type": "Expense Account"},
"7380 Nachrichtenaufwand": {"account_type": "Expense Account"},
"7400 Miet- und Pachtaufwand": {"account_type": "Expense Account"},
"7440 Leasingaufwand": {"account_type": "Expense Account"},
"7480 Lizenzaufwand": {"account_type": "Expense Account"},
"7500 Aufwand f\u00fcr beigestelltes Personal": {"account_type": "Expense Account"},
"7540 Provisionen an Dritte": {"account_type": "Expense Account"},
"7580 Aufsichtsratsverg\u00fctungen": {"account_type": "Expense Account"},
"7610 Druckerzeugnisse und Vervielf\u00e4ltigungen": {"account_type": "Expense Account"},
"7650 Werbung und Repr\u00e4sentationen": {"account_type": "Expense Account"},
"7700 Versicherungen": {"account_type": "Expense Account"},
"7750 Beratungs- und Pr\u00fcfungsaufwand": {"account_type": "Expense Account"},
"7800 Forderungsverluste und Schadensf\u00e4lle": {"account_type": "Expense Account"},
"7840 Verschiedene betriebliche Aufwendungen": {"account_type": "Expense Account"},
"7910 Aufwandsstellenrechung der Hersteller": {"account_type": "Expense Account"},
"7060 Sofortabschreibungen geringwertig": {"account_type": "Expense Account"},
"7070 Abschreibungen vom Umlaufverm\u00f6gen, soweit diese die im Unternehmen \u00fcblichen Abschreibungen \u00fcbersteigen": {"account_type": "Depreciation"},
"7900 Aufwandsstellenrechnung": {"account_type": "Expense Account"},
"7770 Aus- und Fortbildung": {"account_type": "Expense Account"},
"7820 Buchwert abgegangener Anlagen, ausgenommen Finanzanlagen": {"account_type": "Expense Account"},
"7600 B\u00fcromaterial und Drucksorten": {"account_type": "Expense Account"},
"7630 Fachliteratur und Zeitungen ": {"account_type": "Expense Account"},
"7960 Herstellungskosten der zur Erzielung der Umsatzerl\u00f6se erbrachten Leistungen": {"account_type": "Expense Account"},
"7780 Mitgliedsbeitr\u00e4ge": {"account_type": "Expense Account"},
"7880 Skontoertr\u00e4ge auf sonstige betriebliche Aufwendungen": {"account_type": "Expense Account"},
"7990 Sonstige betrieblichen Aufwendungen": {"account_type": "Expense Account"},
"7680 Spenden und Trinkgelder": {"account_type": "Expense Account"},
"7790 Spesen des Geldverkehrs": {"account_type": "Expense Account"},
"7830 Verluste aus dem Abgang vom Anlageverm\u00f6gen, ausgenommen Finanzanlagen": {"account_type": "Expense Account"},
"7970 Vertriebskosten": {"account_type": "Expense Account"},
"7980 Verwaltungskosten": {"account_type": "Expense Account"},
"root_type": "Expense"
},
"Klasse 8: Finanz- und ausserordentliche Ertr\u00e4ge und Aufwendungen": {
"8000 Ertr\u00e4ge aus Beteiligungen": {"account_type": "Income Account"},
"8050 Ertr\u00e4ge aus anderen Wertpapieren und Ausleihungen des Finanzanlageverm\u00f6gens": {"account_type": "Income Account"},
"8100 Zinsen aus Bankguthaben": {"account_type": "Income Account"},
"8110 Zinsen aus gewaehrten Darlehen": {"account_type": "Income Account"},
"8130 Verzugszinsenertraege": {"account_type": "Income Account"},
"8220 Aufwendungen aus Beteiligungen": {"account_type": "Expense Account"},
"8260 Aufwendungen aus sonst. Fiananzanlagen und aus Wertpapieren des Umlaufverm\u00f6gens": {},
"8280 Zinsen und \u00e4hnliche Aufwendungem": {"account_type": "Expense Account"},
"8400 Au\u00dferordentliche Ertr\u00e4ge": {"account_type": "Income Account"},
"8450 Au\u00dferordentliche Aufwendungen": {"account_type": "Expense Account"},
"8500 Steuern vom Einkommen und vom Ertrag": {
"account_type": "Tax"
},
"8600 Aufl\u00f6sung unversteuerten R\u00fccklagen": {"account_type": "Income Account"},
"8700 Aufl\u00f6sung von Kapitalr\u00fccklagen": {"account_type": "Income Account"},
"8750 Aufl\u00f6sung von Gewinnr\u00fccklagen": {"account_type": "Income Account"},
"8800 Zuweisung zu unversteuerten R\u00fccklagen": {"account_type": "Expense Account"},
"8900 Zuweisung zu Gewinnr\u00fccklagen": {"account_type": "Expense Account"},
"8100 Buchwert abgegangener Beteiligungen": {"account_type": "Expense Account"},
"8130 Buchwert abgegangener Wertpapiere des Umlaufverm\u00f6gens": {"account_type": "Expense Account"},
"8120 Buchwert abgegangener sonstiger Finanzanlagen": {"account_type": "Expense Account"},
"8990 Gewinnabfuhr bzw. Verlust\u00fcberrechnung aus Ergebnisabf\u00fchrungsvertr\u00e4gen": {"account_type": "Expense Account"},
"8350 nicht ausgenutzte Lieferantenskonti": {"account_type": "Expense Account"},
"root_type": "Income"
},
"Klasse 9 Passiva: Eigenkapital, R\u00fccklagen, stille Einlagen, Abschlusskonten": {
"9000 Gezeichnetes bzw. gewidmetes Kapital": {
"account_type": "Equity"
},
"9200 Kapitalr\u00fccklagen": {
"account_type": "Equity"
},
"9300 Gewinnr\u00fccklagen": {
"account_type": "Equity"
},
"9400 Bewertungsreserven uns sonst. unversteuerte R\u00fccklagen": {
"account_type": "Equity"
},
"9600 Private Entnahmen": {"account_type": "Equity"},
"9610 Privatsteuern": {"account_type": "Equity"},
"9700 Einlagen stiller Gesellschafter ": {"account_type": "Equity"},
"9900 Evidenzkonto": {"account_type": "Equity"},
"9800 Er\u00f6ffnungsbilanzkonto (EBK)": {"account_type": "Equity"},
"9880 Jahresergebnis laut Gewinn- und Verlustrechnung (G+V)": {"account_type": "Equity"},
"9850 Schlussbilanzkonto (SBK)": {"account_type": "Round Off"},
"9190 nicht eingeforderte ausstehende Einlagen und berechtigte Entnahmen von Gesellschaftern": {
"account_type": "Equity"
},
"root_type": "Equity"
}
}
}
}
}

View File

@@ -0,0 +1,531 @@
{
"country_code": "tr",
"name": "Turkey - Tek D\u00fczen Hesap Plan\u0131",
"tree": {
"Duran Varl\u0131klar": {
"Di\u011fer Alacaklar": {
"Ba\u011fl\u0131 Ortakl\u0131klardan Alacaklar": {},
"Di\u011fer Alacak Senetleri Reeskontu(-)": {},
"Di\u011fer \u00c7e\u015fitli Alacaklar": {},
"Ortaklardan Alacaklar": {},
"Personelden Alacaklar": {},
"\u0130\u015ftiraklerden Alacaklar": {},
"\u015e\u00fcpheli Di\u011fer Alacaklar Kar\u015f\u0131l\u0131\u011f\u0131(-)": {}
},
"Di\u011fer Duran Varl\u0131klar": {
"Birikmi\u015f Amortismanlar(-)": {},
"Di\u011fer KDV": {},
"Di\u011fer \u00c7e\u015fitli Duran Varl\u0131klar": {},
"Elden \u00c7\u0131kar\u0131lacak Stoklar Ve Maddi Duran Varl\u0131klar": {},
"Gelecek Y\u0131llar \u0130htiyac\u0131 Stoklar": {},
"Gelecek Y\u0131llarda \u0130ndirilecek KDV": {},
"Pe\u015fin \u00d6denen Vergi Ve Fonlar": {},
"Stok De\u011fer D\u00fc\u015f\u00fckl\u00fc\u011f\u00fc Kar\u015f\u0131l\u0131\u011f\u0131(-)": {}
},
"Gelecek Y\u0131llara Ait Giderler ve Gelir Tahakkuklar\u0131": {
"Gelecek Y\u0131llara Ait Giderler": {},
"Gelir Tahakkuklar\u0131": {}
},
"Maddi Duran Varl\u0131klar": {
"Arazi Ve Arsalar": {},
"Binalar": {},
"Birikmi\u015f Amortismanlar(-)": {},
"Demirba\u015flar": {},
"Di\u011fer Maddi Duran Varl\u0131klar": {},
"Ta\u015f\u0131tlar": {},
"Tesis, Makine Ve Cihazlar": {},
"Verilen Avanslar": {},
"Yap\u0131lmakta Olan Yat\u0131r\u0131mlar": {},
"Yer Alt\u0131 Ve Yer \u00dcst\u00fc D\u00fczenleri": {}
},
"Maddi Olmayan Duran Varl\u0131klar": {
"Ara\u015ft\u0131rma Ve Geli\u015ftirme Giderleri": {},
"Birikmi\u015f Amortismanlar(-)": {},
"Di\u011fer Maddi Olmayan Duran Varl\u0131klar": {},
"Haklar": {},
"Kurulu\u015f Ve \u00d6rg\u00fctlenme Giderleri": {},
"Verilen Avanslar": {},
"\u00d6zel Maliyetler": {},
"\u015eerefiye": {}
},
"Mali Duran Varl\u0131klar": {
"Ba\u011fl\u0131 Menkul K\u0131ymetler": {},
"Ba\u011fl\u0131 Menkul K\u0131ymetler De\u011fer D\u00fc\u015f\u00fckl\u00fc\u011f\u00fc Kar\u015f\u0131l\u0131\u011f\u0131(-)": {},
"Ba\u011fl\u0131 Ortakl\u0131klar": {},
"Ba\u011fl\u0131 Ortakl\u0131klar Sermaye Paylar\u0131 De\u011fer D\u00fc\u015f\u00fckl\u00fc\u011f\u00fc Kar\u015f\u0131l\u0131\u011f\u0131(-)": {},
"Ba\u011fl\u0131 Ortakl\u0131klara Sermaye Taahh\u00fctleri(-)": {},
"Di\u011fer Mali Duran Varl\u0131klar": {},
"Di\u011fer Mali Duran Varl\u0131klar Kar\u015f\u0131l\u0131\u011f\u0131(-)": {},
"\u0130\u015ftirakler": {},
"\u0130\u015ftirakler Sermaye Paylar\u0131 De\u011fer D\u00fc\u015f\u00fckl\u00fc\u011f\u00fc Kar\u015f\u0131l\u0131\u011f\u0131(-)": {},
"\u0130\u015ftiraklere Sermaye Taahh\u00fctleri(-)": {}
},
"Ticari Alacaklar": {
"Alacak Senetleri": {},
"Alacak Senetleri Reeskontu(-)": {},
"Al\u0131c\u0131lar": {},
"Kazaqn\u0131lmam\u0131\u015f Finansal Kiralama Faiz Gelirleri(-)": {},
"Verilen Depozito Ve Teminatlar": {},
"\u015e\u00fcpheli Ticari Alacaklar Kar\u015f\u0131l\u0131\u011f\u0131(-)": {}
},
"root_type": "",
"\u00d6zel T\u00fckenmeye Tabi Varl\u0131klar": {
"Arama Giderleri": {},
"Birikmi\u015f T\u00fckenme Paylar\u0131(-)": {},
"Di\u011fer \u00d6zel T\u00fckenmeye Tabi Varl\u0131klar": {},
"Haz\u0131rl\u0131k Ve Geli\u015ftirme Giderleri": {},
"Verilen Avanslar": {}
}
},
"D\u00f6nen Varl\u0131klar": {
"Di\u011fer Alacaklar": {
"Ba\u011fl\u0131 Ortakl\u0131klardan Alacaklar": {},
"Di\u011fer Alacak Senetleri Reeskontu(-)": {},
"Di\u011fer \u00c7e\u015fitli Alacaklar": {},
"Ortaklardan Alacaklar": {},
"Personelden Alacaklar": {},
"\u0130\u015ftiraklerden Alacaklar": {},
"\u015e\u00fcpheli Di\u011fer Alacaklar": {},
"\u015e\u00fcpheli Di\u011fer Alacaklar Kar\u015f\u0131l\u0131\u011f\u0131(-)": {}
},
"Di\u011fer D\u00f6nen Varl\u0131klar": {
"Devreden KDV": {},
"Di\u011fer D\u00f6nen Varl\u0131klar Kar\u015f\u0131l\u0131\u011f\u0131(-)": {},
"Di\u011fer KDV": {},
"Di\u011fer \u00c7e\u015fitli D\u00f6nen Varl\u0131klar": {},
"Personel Avanslar\u0131": {},
"Pe\u015fin \u00d6denen Vergiler Ve Fonlar": {},
"Say\u0131m Ve Tesell\u00fcm Noksanlar\u0131": {},
"\u0130ndirilecek KDV": {},
"\u0130\u015f Avanslar\u0131": {}
},
"Gelecek Aylara Ait Giderler ve Gelir Tahakkuklar\u0131": {
"Gelecek Aylara Ait Giderler": {},
"Gelir Tahakkuklar\u0131": {}
},
"Haz\u0131r De\u011ferler": {
"Al\u0131nan \u00c7ekler": {},
"Bankalar": {
"account_type": "Bank"
},
"Di\u011fer Haz\u0131r De\u011ferler": {},
"Kasa": {
"account_type": "Cash"
},
"Verilen \u00c7ekler ve \u00d6deme Emirleri(-)": {}
},
"Menkul K\u0131ymetler": {
"Di\u011fer Menkul K\u0131ymetler": {},
"Hisse Senetleri": {},
"Kamu Kesimi Tahvil, Senet ve Bonolar\u0131": {},
"Menkul K\u0131ymetler De\u011fer D\u00fc\u015f\u00fckl\u00fc\u011f\u00fc Kar\u015f\u0131l\u0131\u011f\u0131(-)": {},
"\u00d6zel Kesim Tahvil Senet Ve Bonolar\u0131": {}
},
"Stoklar": {
"Mamuller": {},
"Stok De\u011fer D\u00fc\u015f\u00fckl\u00fc\u011f\u00fc Kar\u015f\u0131l\u0131\u011f\u0131(-)": {},
"Ticari Mallar": {},
"Verilen Sipari\u015f Avanslar\u0131": {},
"Yar\u0131 Mamuller": {},
"\u0130lk Madde Malzeme": {}
},
"Ticari Alacaklar": {
"Alacak Senetleri": {},
"Alacak Senetleri Reeskontu(-)": {},
"Al\u0131c\u0131lar": {},
"Di\u011fer Ticari Alacaklar": {},
"Kazan\u0131lmam\u0131\u015f Finansal Kiralama Faiz Gelirleri(-)": {},
"Verilen Depozito ve Teminatlar": {},
"\u015e\u00fcpheli Ticari Alacaklar": {},
"\u015e\u00fcpheli Ticari Alacaklar Kar\u015f\u0131l\u0131\u011f\u0131": {}
},
"Y\u0131llara Yayg\u0131n \u0130n\u015faat ve Onar\u0131m Maliyetleri": {
"Ta\u015feronlara Verilen Avanslar": {},
"Y\u0131llara Yayg\u0131n \u0130n\u015faat Ve Onar\u0131m Maliyetleri": {}
},
"root_type": ""
},
"Gelir Tablosu Hesaplar\u0131": {
"Br\u00fct Sat\u0131\u015flar": {
"Di\u011fer Gelirler": {},
"Yurt D\u0131\u015f\u0131 Sat\u0131\u015flar": {},
"Yurt \u0130\u00e7i Sat\u0131\u015flar": {}
},
"Di\u011fer Faaliyetlerden Olu\u015fan Gelir ve K\u00e2rlar": {
"Ba\u011fl\u0131 Ortakl\u0131klardan Temett\u00fc Gelirleri": {},
"Di\u011fer Ola\u011fan Gelir Ve K\u00e2rlar": {},
"Enflasyon D\u00fczeltme K\u00e2rlar\u0131": {},
"Faiz Gelirleri": {},
"Kambiyo K\u00e2rlar\u0131": {},
"Komisyon Gelirleri": {},
"Konusu Kalmayan Kar\u015f\u0131l\u0131klar": {},
"Menkul K\u0131ymet Sat\u0131\u015f K\u00e2rlar\u0131": {},
"Reeskont Faiz Gelirleri": {},
"\u0130\u015ftiraklerden Temett\u00fc Gelirleri": {}
},
"Di\u011fer Faaliyetlerden Olu\u015fan Gider ve Zararlar (-)": {
"Di\u011fer Ola\u011fan Gider Ve Zararlar(-)": {},
"Enflasyon D\u00fczeltmesi Zararlar\u0131(-)": {},
"Kambiyo Zararlar\u0131(-)": {},
"Kar\u015f\u0131l\u0131k Giderleri(-)": {},
"Komisyon Giderleri(-)": {},
"Menkul K\u0131ymet Sat\u0131\u015f Zararlar\u0131(-)": {},
"Reeskont Faiz Giderleri(-)": {}
},
"D\u00f6nem Net K\u00e2r\u0131 Ve Zarar\u0131": {
"D\u00f6nem K\u00e2r\u0131 Vergi Ve Di\u011fer Yasal Y\u00fck\u00fcml\u00fcl\u00fck Kar\u015f\u0131l\u0131klar\u0131(-)": {},
"D\u00f6nem K\u00e2r\u0131 Veya Zarar\u0131": {},
"D\u00f6nem Net K\u00e2r\u0131 Veya Zarar\u0131": {},
"Enflasyon D\u00fczeltme Hesab\u0131": {},
"Y\u0131llara Yayg\u0131n \u0130n\u015faat Ve Enflasyon D\u00fczeltme Hesab\u0131": {}
},
"Faaliyet Giderleri(-)": {
"Ara\u015ft\u0131rma Ve Geli\u015ftirme Giderleri(-)": {},
"Genel Y\u00f6netim Giderleri(-)": {},
"Pazarlama Sat\u0131\u015f Ve Da\u011f\u0131t\u0131m Giderleri(-)": {}
},
"Finansman Giderleri": {
"K\u0131sa Vadeli Bor\u00e7lanma Giderleri(-)": {},
"Uzun Vadeli Bor\u00e7lanma Giderleri(-)": {}
},
"Ola\u011fan D\u0131\u015f\u0131 Gelir Ve K\u00e2rlar": {
"Di\u011fer Ola\u011fan D\u0131\u015f\u0131 Gelir Ve K\u00e2rlar": {},
"\u00d6nceki D\u00f6nem Gelir Ve K\u00e2rlar\u0131": {}
},
"Ola\u011fan D\u0131\u015f\u0131 Gider Ve Zaralar(-)": {
"Di\u011fer Ola\u011fan D\u0131\u015f\u0131 Gider Ve Zararlar(-)": {},
"\u00c7al\u0131\u015fmayan K\u0131s\u0131m Gider Ve Zararlar\u0131(-)": {},
"\u00d6nceki D\u00f6nem Gider Ve Zararlar\u0131(-)": {}
},
"Sat\u0131\u015f \u0130ndirimleri (-)": {
"Di\u011fer \u0130ndirimler": {},
"Sat\u0131\u015f \u0130ndirimleri(-)": {},
"Sat\u0131\u015ftan \u0130adeler(-)": {}
},
"Sat\u0131\u015flar\u0131n Maliyeti(-)": {
"Di\u011fer Sat\u0131\u015flar\u0131n Maliyeti(-)": {},
"Sat\u0131lan Hizmet Maliyeti(-)": {},
"Sat\u0131lan Mamuller Maliyeti(-)": {},
"Sat\u0131lan Ticari Mallar Maliyeti(-)": {}
},
"root_type": ""
},
"K\u0131sa Vadeli Yabanc\u0131 Kaynaklar": {
"Al\u0131nan Avanslar": {
"Al\u0131nan Di\u011fer Avanslar": {
"account_type": "Payable"
},
"Al\u0131nan Sipari\u015f Avanslar\u0131": {
"account_type": "Payable"
},
"account_type": "Payable"
},
"Bor\u00e7 ve Gider Kar\u015f\u0131l\u0131klar\u0131": {
"Di\u011fer Bor\u00e7 Ve Gider Kar\u015f\u0131l\u0131klar\u0131": {
"account_type": "Payable"
},
"D\u00f6nem K\u00e2r\u0131 Vergi Ve Di\u011fer Yasal Y\u00fck\u00fcml\u00fcl\u00fck Kar\u015f\u0131l\u0131klar\u0131": {
"account_type": "Tax"
},
"D\u00f6nem K\u00e2r\u0131n\u0131n Pe\u015fin \u00d6denen Vergi Ve Di\u011fer Y\u00fck\u00fcml\u00fcl\u00fckler(-)": {
"account_type": "Tax"
},
"K\u0131dem Tazminat\u0131 Kar\u015f\u0131l\u0131\u011f\u0131": {},
"Maliyet Giderleri Kar\u015f\u0131l\u0131\u011f\u0131": {},
"account_type": "Payable"
},
"Di\u011fer Bor\u00e7lar": {
"Ba\u011fl\u0131 Ortakl\u0131klara Bor\u00e7lar": {
"account_type": "Payable"
},
"Di\u011fer Bor\u00e7 Senetleri Reeskontu(-)": {
"account_type": "Payable"
},
"Di\u011fer \u00c7e\u015fitli Bor\u00e7lar": {
"account_type": "Payable"
},
"Ortaklara Bor\u00e7lar": {
"account_type": "Payable"
},
"Personele Bor\u00e7lar": {
"account_type": "Payable"
},
"account_type": "Payable",
"\u0130\u015ftiraklere Bor\u00e7lar": {
"account_type": "Payable"
}
},
"Di\u011fer K\u0131sa Vadeli Yabanc\u0131 Kaynaklar": {
"Di\u011fer KDV": {
"account_type": "Tax"
},
"Di\u011fer \u00c7e\u015fitli Yabanc\u0131 Kaynaklar": {},
"Hesaplanan KDV": {
"account_type": "Tax"
},
"Merkez Ve \u015eubeler Cari Hesab\u0131": {},
"Say\u0131m Ve Tesell\u00fcm Fazlalar\u0131": {},
"account_type": "Payable"
},
"Gelecek Aylara Ait Gelirler Ve Gider Tahakkuklar\u0131": {
"Gelecek Aylara Ait Gelirler": {},
"Gider Tahakkuklar\u0131": {}
},
"Mali Bor\u00e7lar": {
"Banka Kredileri": {
"account_type": "Payable"
},
"Di\u011fer Mali Bor\u00e7lar": {
"account_type": "Payable"
},
"Ertelenmi\u015f Finansal Kiralama Bor\u00e7lanma Maliyetleri(-)": {
"account_type": "Payable"
},
"Finansal Kiralama \u0130\u015flemlerinden Bor\u00e7lar": {
"account_type": "Payable"
},
"Menkul K\u0131ymetler \u0130hra\u00e7 Fark\u0131(-)": {
"account_type": "Payable"
},
"Tahvil Anapara Bor\u00e7, Taksit Ve Faizleri": {
"account_type": "Payable"
},
"Uzun Vadeli Kredilerin Anapara Taksitleri Ve Faizleri": {
"account_type": "Payable"
},
"account_type": "Payable",
"\u00c7\u0131kar\u0131lan Bonolar Ve Senetler": {
"account_type": "Payable"
},
"\u00c7\u0131kar\u0131lm\u0131\u015f Di\u011fer Menkul K\u0131ymetler": {
"account_type": "Payable"
}
},
"Ticari Bor\u00e7lar": {
"Al\u0131nan Depozito Ve Teminatlar": {
"account_type": "Payable"
},
"Bor\u00e7 Senetleri": {
"account_type": "Payable"
},
"Bor\u00e7 Senetleri Reeskontu(-)": {
"account_type": "Payable"
},
"Di\u011fer Ticari Bor\u00e7lar": {
"account_type": "Payable"
},
"Sat\u0131c\u0131lar": {
"account_type": "Payable"
},
"account_type": "Payable"
},
"Y\u0131llara Yayg\u0131n \u0130n\u015faat Ve Onar\u0131m Hakedi\u015fleri": {
"350 Y\u0131llara Yayg\u0131n \u0130n\u015faat Ve Onar\u0131m Hakedi\u015fleri Bedelleri": {
"account_type": "Payable"
},
"account_type": "Payable"
},
"root_type": "",
"\u00d6denecek Vergi ve Di\u011fer Y\u00fck\u00fcml\u00fcl\u00fckler": {
"Vadesi Ge\u00e7mi\u015f, Ertelenmi\u015f Veya Taksitlendirilmi\u015f Vergi Ve Di\u011fer Y\u00fck\u00fcml\u00fcl\u00fckler": {
"account_type": "Tax"
},
"account_type": "Tax",
"\u00d6denecek Di\u011fer Y\u00fck\u00fcml\u00fcl\u00fckler": {
"account_type": "Tax"
},
"\u00d6denecek Sosyal G\u00fcvenl\u00fck Kesintileri": {
"account_type": "Tax"
},
"\u00d6denecek Vergi Ve Fonlar": {
"account_type": "Tax"
}
}
},
"Maliyet Hesaplar\u0131": {
"Ara\u015ft\u0131rma Ve Geli\u015ftirme Giderleri": {},
"Direkt \u0130lk Madde Ve Malzeme Giderleri": {
"Direk \u0130lk Madde Ve Malzeme Giderleri Hesab\u0131": {},
"Direkt \u0130lk Madde Ve Malzeme Fiyat Fark\u0131": {},
"Direkt \u0130lk Madde Ve Malzeme Miktar Fark\u0131": {},
"Direkt \u0130lk Madde Ve Malzeme Yans\u0131tma Hesab\u0131": {}
},
"Direkt \u0130\u015f\u00e7ilik Giderleri": {
"Direkt \u0130\u015f\u00e7ilik Giderleri": {},
"Direkt \u0130\u015f\u00e7ilik Giderleri Yans\u0131tma Hesab\u0131": {},
"Direkt \u0130\u015f\u00e7ilik S\u00fcre Farklar\u0131": {},
"Direkt \u0130\u015f\u00e7ilik \u00dccret Farklar\u0131": {}
},
"Finansman Giderleri": {
"Finansman Giderleri": {},
"Finansman Giderleri Fark Hesab\u0131": {},
"Finansman Giderleri Yans\u0131tma Hesab\u0131": {}
},
"Genel Y\u00f6netim Giderleri": {
"Genel Y\u00f6netim Gider Farklar\u0131 Hesab\u0131": {},
"Genel Y\u00f6netim Giderleri": {},
"Genel Y\u00f6netim Giderleri Yans\u0131tma Hesab\u0131": {}
},
"Genel \u00dcretim Giderleri": {
"Genel \u00dcretim Giderleri": {},
"Genel \u00dcretim Giderleri B\u00fct\u00e7e Farklar\u0131": {},
"Genel \u00dcretim Giderleri Kapasite Farklar\u0131": {},
"Genel \u00dcretim Giderleri Verimlilik Giderleri": {},
"Genel \u00dcretim Giderleri Yans\u0131tma Hesab\u0131": {}
},
"Hizmet \u00dcretim Maliyeti": {
"Hizmet \u00dcretim Maliyeti": {},
"Hizmet \u00dcretim Maliyeti Fark Hesaplar\u0131": {},
"Hizmet \u00dcretim Maliyeti Yans\u0131tma Hesab\u0131": {}
},
"Maliyet Muhasebesi Ba\u011flant\u0131 Hesaplar\u0131": {
"Maliyet Muhasebesi Ba\u011flant\u0131 Hesab\u0131": {},
"Maliyet Muhasebesi Yans\u0131tma Hesab\u0131": {}
},
"Pazarlama, Sat\u0131\u015f Ve Da\u011f\u0131t\u0131m Giderleri": {
"Atra\u015ft\u0131rma Ve Geli\u015ftirme Giderleri": {},
"Pazarlama Sat\u0131\u015f Ve Dag\u0131t\u0131m Giderleri Yans\u0131tma Hesab\u0131": {},
"Pazarlama Sat\u0131\u015f Ve Da\u011f\u0131t\u0131m Giderleri Fark Hesab\u0131": {}
},
"root_type": ""
},
"Naz\u0131m Hesaplar": {
"root_type": ""
},
"Serbest Hesaplar": {
"root_type": ""
},
"Uzun Vadeli Yabanc\u0131 Kaynaklar": {
"Al\u0131nan Avanslar": {
"Al\u0131nan Di\u011fer Avanslar": {
"account_type": "Payable"
},
"Al\u0131nan Sipari\u015f Avanslar\u0131": {
"account_type": "Payable"
},
"account_type": "Payable"
},
"Bor\u00e7 Ve Gider Kar\u015f\u0131l\u0131klar\u0131": {
"Di\u011fer Bor\u00e7 Ve Gider Kar\u015f\u0131l\u0131klar\u0131": {
"account_type": "Payable"
},
"K\u0131dem Tazminat\u0131 Kar\u015f\u0131l\u0131\u011f\u0131": {},
"account_type": "Payable"
},
"Di\u011fer Bor\u00e7lar": {
"Ba\u011fl\u0131 Ortakl\u0131klara Bor\u00e7lar": {
"account_type": "Payable"
},
"Di\u011fer Bor\u00e7 Senetleri Reeskontu(-)": {
"account_type": "Payable"
},
"Di\u011fer \u00c7e\u015fitli Bor\u00e7lar": {
"account_type": "Payable"
},
"Kamuya Olan Ertelenmi\u015f Veya Taksitlendirilmi\u015f Bor\u00e7lar": {
"account_type": "Payable"
},
"Ortaklara Bor\u00e7lar": {
"account_type": "Payable"
},
"account_type": "Payable",
"\u0130\u015ftiraklere Bor\u00e7lar": {
"account_type": "Payable"
}
},
"Di\u011fer Uzun Vadeli Yabanc\u0131 Kaynaklar": {
"Di\u011fer \u00c7e\u015fitli Uzun Vadeli Yabanc\u0131 Kaynaklar": {
"account_type": "Payable"
},
"Gelecek Y\u0131llara Ertelenmi\u015f Veya Terkin Edilecek KDV": {
"account_type": "Payable"
},
"Tesise Kat\u0131lma Paylar\u0131": {
"account_type": "Payable"
},
"account_type": "Payable"
},
"Gelecek Y\u0131llara Ait Gelirler Ve Gider Tahakkuklar\u0131": {
"Gelecek Y\u0131llara Ait Gelirler": {},
"Gider Tahakkuklar\u0131": {}
},
"Mali Bor\u00e7lar": {
"Banka Kredileri": {
"account_type": "Payable"
},
"Di\u011fer Mali Bor\u00e7lar": {
"account_type": "Payable"
},
"Ertelenmi\u015f Finansal Kiralama Bor\u00e7lanma Maliyetleri(-)": {
"account_type": "Payable"
},
"Finansal Kiralama \u0130\u015flemlerinden Bor\u00e7lar": {
"account_type": "Payable"
},
"Menkul K\u0131ymetler \u0130hra\u00e7 Fark\u0131(-)": {
"account_type": "Payable"
},
"account_type": "Payable",
"\u00c7\u0131kar\u0131lm\u0131\u015f Di\u011fer Menkul K\u0131ymetler": {
"account_type": "Payable"
},
"\u00c7\u0131kar\u0131lm\u0131\u015f Tahviller": {
"account_type": "Payable"
}
},
"Ticari Bor\u00e7lar": {
"Al\u0131nan Depozito Ve Teminatlar": {
"account_type": "Payable"
},
"Bor\u00e7 Senetleri": {
"account_type": "Payable"
},
"Bor\u00e7 Senetleri Reeskontu(-)": {
"account_type": "Payable"
},
"Di\u011fer Ticari Bor\u00e7lar": {
"account_type": "Payable"
},
"Sat\u0131c\u0131lar": {
"account_type": "Payable"
},
"account_type": "Payable"
},
"root_type": ""
},
"\u00d6z Kaynaklar": {
"D\u00f6nem Net K\u00e2r\u0131 (Zarar\u0131)": {
"D\u00f6nem Net K\u00e2r\u0131": {},
"D\u00f6nem Net Zarar\u0131(-)": {}
},
"Ge\u00e7mi\u015f Y\u0131llar K\u00e2rlar\u0131": {
"Ge\u00e7mi\u015f Y\u0131llar K\u00e2rlar\u0131": {}
},
"Ge\u00e7mi\u015f Y\u0131llar Zararlar\u0131(-)": {
"Ge\u00e7mi\u015f Y\u0131llar Zararlar\u0131(-)": {}
},
"K\u00e2r Yedekleri": {
"Di\u011fer K\u00e2r Yedekleri": {},
"Ola\u011fan\u00fcst\u00fc Yedekler": {},
"Stat\u00fc Yedekleri": {},
"Yasal Yedekler": {},
"\u00d6zel Fonlar": {}
},
"Sermaye Yedekleri": {
"Di\u011fer Sermaye Yedekleri": {},
"Hisse Senedi \u0130ptal K\u00e2rlar\u0131": {},
"Hisse Senetleri \u0130hra\u00e7 Primleri": {},
"Maddi Duran Varl\u0131k Yeniden De\u011ferlenme Art\u0131\u015flar\u0131": {},
"Maliyet Art\u0131\u015flar\u0131 Fonu": {},
"\u0130\u015ftirakler Yeniden De\u011ferleme Art\u0131\u015flar\u0131": {}
},
"root_type": "",
"\u00d6denmi\u015f Sermaye": {
"Sermaye": {},
"\u00d6denmi\u015f Sermaye(-)": {
"account_type": "Payable"
}
}
}
}
}

View File

@@ -437,20 +437,12 @@
},
"Sales": {
"Sales from Other Regions": {
"Sales from Other Region": {
"account_type": "Income Account"
}
"Sales from Other Region": {}
},
"Sales of same region": {
"Management Consultancy Fees 1": {
"account_type": "Income Account"
},
"Sales Account": {
"account_type": "Income Account"
},
"Sales of I/C": {
"account_type": "Income Account"
}
"Management Consultancy Fees 1": {},
"Sales Account": {},
"Sales of I/C": {}
}
},
"root_type": "Income"

View File

@@ -56,9 +56,7 @@
"Constru\u00e7\u00f5es em Andamento de Im\u00f3veis Destinados \u00e0 Venda": {},
"Estoques Destinados \u00e0 Doa\u00e7\u00e3o": {},
"Im\u00f3veis Destinados \u00e0 Venda": {},
"Insumos (materiais diretos)": {
"account_type": "Stock"
},
"Insumos (materiais diretos)": {},
"Insumos Agropecu\u00e1rios": {},
"Mercadorias para Revenda": {},
"Outras 11": {},
@@ -148,65 +146,6 @@
"root_type": "Asset"
},
"CUSTOS DE PRODU\u00c7\u00c3O": {
"CUSTO DOS PRODUTOS E SERVI\u00c7OS VENDIDOS": {
"CUSTO DOS PRODUTOS VENDIDOS": {
"CUSTO DOS PRODUTOS VENDIDOS PARA AS DEMAIS ATIVIDADES": {
"Custos dos Produtos Vendidos em Geral": {
"account_type": "Cost of Goods Sold"
},
"Outros Custos 4": {},
"account_type": "Cost of Goods Sold"
},
"CUSTO DOS PRODUTOS VENDIDOS PARA ASSIST\u00caNCIA SOCIAL": {
"Custos dos Produtos para Assist\u00eancia Social - Gratuidades": {},
"Custos dos Produtos para Assist\u00eancia Social - Vendidos": {},
"Outras": {}
},
"CUSTO DOS PRODUTOS VENDIDOS PARA EDUCA\u00c7\u00c3O": {
"Custos dos Produtos para Educa\u00e7\u00e3o - Gratuidades": {},
"Custos dos Produtos para Educa\u00e7\u00e3o - Vendidos": {},
"Outros Custos 6": {}
},
"CUSTO DOS PRODUTOS VENDIDOS PARA SA\u00daDE": {
"Custos dos Produtos para Sa\u00fade - Gratuidades": {},
"Custos dos Produtos para Sa\u00fade \u2013 Vendidos": {},
"Outros Custos 5": {}
},
"account_type": "Cost of Goods Sold"
},
"CUSTO DOS SERVI\u00c7OS PRESTADOS": {
"CUSTO DOS SERVI\u00c7OS PRESTADOS PARA AS DEMAIS ATIVIDADES": {
"Custo dos Servi\u00e7os Prestados em Geral": {},
"Outros Custos": {}
},
"CUSTO DOS SERVI\u00c7OS PRESTADOS PARA ASSIST\u00caNCIA SOCIAL": {
"Custo dos Servi\u00e7os Prestados a Conv\u00eanios/Contratos/Parcerias": {},
"Custo dos Servi\u00e7os Prestados a Doa\u00e7\u00f5es 1": {},
"Custo dos Servi\u00e7os Prestados a Doa\u00e7\u00f5es/Subven\u00e7\u00f5es Vinculadas 1": {},
"Custo dos Servi\u00e7os Prestados a Gratuidade 1": {},
"Custo dos Servi\u00e7os Prestados a Pacientes Particulares": {},
"Outros Custos 2": {}
},
"CUSTO DOS SERVI\u00c7OS PRESTADOS PARA EDUCA\u00c7\u00c3O": {
"Custo dos Servi\u00e7os Prestados a Alunos N\u00e3o Bolsistas": {},
"Custo dos Servi\u00e7os Prestados a Conv\u00eanios/Contratos/Parcerias (Exceto PROUNI)": {},
"Custo dos Servi\u00e7os Prestados a Doa\u00e7\u00f5es": {},
"Custo dos Servi\u00e7os Prestados a Doa\u00e7\u00f5es/Subven\u00e7\u00f5es Vinculadas": {},
"Custo dos Servi\u00e7os Prestados a Gratuidade": {},
"Custo dos Servi\u00e7os Prestados ao PROUNI": {},
"Outros Custos 1": {}
},
"CUSTO DOS SERVI\u00c7OS PRESTADOS PARA SA\u00daDE": {
"Custo dos Servi\u00e7os Prestados a Conv\u00eanios SUS": {},
"Custo dos Servi\u00e7os Prestados a Conv\u00eanios/Contratos/Parcerias 1": {},
"Custo dos Servi\u00e7os Prestados a Doa\u00e7\u00f5es 2": {},
"Custo dos Servi\u00e7os Prestados a Doa\u00e7\u00f5es/Subven\u00e7\u00f5es Vinculadas 2": {},
"Custo dos Servi\u00e7os Prestados a Gratuidade 2": {},
"Custo dos Servi\u00e7os Prestados a Pacientes Particulares 1": {},
"Outros Custos 3": {}
}
}
},
"CUSTO DOS BENS E SERVI\u00c7OS PRODUZIDOS": {
"CUSTO DOS PRODUTOS DE FABRICA\u00c7\u00c3O PR\u00d3PRIA PRODUZIDOS": {
"Alimenta\u00e7\u00e3o do Trabalhador": {},
@@ -682,9 +621,7 @@
"Receita das Unidades Imobili\u00e1rias Vendidas": {},
"Receita de Exporta\u00e7\u00e3o Direta de Mercadorias e Produtos": {},
"Receita de Exporta\u00e7\u00e3o de Servi\u00e7os": {},
"Receita de Loca\u00e7\u00e3o de Bens M\u00f3veis e Im\u00f3veis": {
"account_type": "Income Account"
},
"Receita de Loca\u00e7\u00e3o de Bens M\u00f3veis e Im\u00f3veis": {},
"Receita de Vendas de Mercadorias e Produtos a Comercial Exportadora com Fim Espec\u00edfico de Exporta\u00e7\u00e3o": {}
}
}
@@ -708,6 +645,65 @@
}
},
"RESULTADO OPERACIONAL": {
"CUSTO DOS PRODUTOS E SERVI\u00c7OS VENDIDOS": {
"CUSTO DOS PRODUTOS VENDIDOS": {
"CUSTO DOS PRODUTOS VENDIDOS PARA AS DEMAIS ATIVIDADES": {
"Custos dos Produtos Vendidos em Geral": {
"account_type": "Cost of Goods Sold"
},
"Outros Custos 4": {},
"account_type": "Cost of Goods Sold"
},
"CUSTO DOS PRODUTOS VENDIDOS PARA ASSIST\u00caNCIA SOCIAL": {
"Custos dos Produtos para Assist\u00eancia Social - Gratuidades": {},
"Custos dos Produtos para Assist\u00eancia Social - Vendidos": {},
"Outras": {}
},
"CUSTO DOS PRODUTOS VENDIDOS PARA EDUCA\u00c7\u00c3O": {
"Custos dos Produtos para Educa\u00e7\u00e3o - Gratuidades": {},
"Custos dos Produtos para Educa\u00e7\u00e3o - Vendidos": {},
"Outros Custos 6": {}
},
"CUSTO DOS PRODUTOS VENDIDOS PARA SA\u00daDE": {
"Custos dos Produtos para Sa\u00fade - Gratuidades": {},
"Custos dos Produtos para Sa\u00fade \u2013 Vendidos": {},
"Outros Custos 5": {}
},
"account_type": "Cost of Goods Sold"
},
"CUSTO DOS SERVI\u00c7OS PRESTADOS": {
"CUSTO DOS SERVI\u00c7OS PRESTADOS PARA AS DEMAIS ATIVIDADES": {
"Custo dos Servi\u00e7os Prestados em Geral": {},
"Outros Custos": {}
},
"CUSTO DOS SERVI\u00c7OS PRESTADOS PARA ASSIST\u00caNCIA SOCIAL": {
"Custo dos Servi\u00e7os Prestados a Conv\u00eanios/Contratos/Parcerias": {},
"Custo dos Servi\u00e7os Prestados a Doa\u00e7\u00f5es 1": {},
"Custo dos Servi\u00e7os Prestados a Doa\u00e7\u00f5es/Subven\u00e7\u00f5es Vinculadas 1": {},
"Custo dos Servi\u00e7os Prestados a Gratuidade 1": {},
"Custo dos Servi\u00e7os Prestados a Pacientes Particulares": {},
"Outros Custos 2": {}
},
"CUSTO DOS SERVI\u00c7OS PRESTADOS PARA EDUCA\u00c7\u00c3O": {
"Custo dos Servi\u00e7os Prestados a Alunos N\u00e3o Bolsistas": {},
"Custo dos Servi\u00e7os Prestados a Conv\u00eanios/Contratos/Parcerias (Exceto PROUNI)": {},
"Custo dos Servi\u00e7os Prestados a Doa\u00e7\u00f5es": {},
"Custo dos Servi\u00e7os Prestados a Doa\u00e7\u00f5es/Subven\u00e7\u00f5es Vinculadas": {},
"Custo dos Servi\u00e7os Prestados a Gratuidade": {},
"Custo dos Servi\u00e7os Prestados ao PROUNI": {},
"Outros Custos 1": {}
},
"CUSTO DOS SERVI\u00c7OS PRESTADOS PARA SA\u00daDE": {
"Custo dos Servi\u00e7os Prestados a Conv\u00eanios SUS": {},
"Custo dos Servi\u00e7os Prestados a Conv\u00eanios/Contratos/Parcerias 1": {},
"Custo dos Servi\u00e7os Prestados a Doa\u00e7\u00f5es 2": {},
"Custo dos Servi\u00e7os Prestados a Doa\u00e7\u00f5es/Subven\u00e7\u00f5es Vinculadas 2": {},
"Custo dos Servi\u00e7os Prestados a Gratuidade 2": {},
"Custo dos Servi\u00e7os Prestados a Pacientes Particulares 1": {},
"Outros Custos 3": {}
}
}
},
"DESPESAS OPERACIONAIS": {
"DESPESAS OPERACIONAIS 1": {
"DESPESAS OPERACIONAIS 2": {

View File

@@ -33,9 +33,7 @@
},
"Stocks": {
"Mati\u00e8res premi\u00e8res": {},
"Stock de produits fini": {
"account_type": "Stock"
},
"Stock de produits fini": {},
"Stock exp\u00e9di\u00e9 non-factur\u00e9": {},
"Travaux en cours": {},
"account_type": "Stock"
@@ -397,11 +395,9 @@
},
"Produits": {
"Revenus de ventes": {
"Escomptes de volume sur ventes": {},
" Escomptes de volume sur ventes": {},
"Autres produits d'exploitation": {},
"Ventes": {
"account_type": "Income Account"
},
"Ventes": {},
"Ventes avec des provinces harmonis\u00e9es": {},
"Ventes avec des provinces non-harmonis\u00e9es": {},
"Ventes \u00e0 l'\u00e9tranger": {}

View File

@@ -1,532 +0,0 @@
{
"country_code": "ch",
"name": "240812 Schulkontenrahmen VEB - DE",
"tree": {
"Aktiven": {
"account_number": "1",
"is_group": 1,
"root_type": "Asset",
"Umlaufvermögen": {
"account_number": "10",
"is_group": 1,
"Flüssige Mittel": {
"account_number": "100",
"is_group": 1,
"Kasse": {
"account_number": "1000",
"account_type": "Cash"
},
"Bankguthaben": {
"account_number": "1020",
"account_type": "Bank"
}
},
"Kurzfristig gehaltene Aktiven mit Börsenkurs": {
"account_number": "106",
"is_group": 1,
"Wertschriften": {
"account_number": "1060"
},
"Wertberichtigungen Wertschriften": {
"account_number": "1069"
}
},
"Forderungen aus Lieferungen und Leistungen": {
"account_number": "110",
"is_group": 1,
"Forderungen aus Lieferungen und Leistungen (Debitoren)": {
"account_number": "1100"
},
"Delkredere": {
"account_number": "1109"
}
},
"Übrige kurzfristige Forderungen": {
"account_number": "114",
"is_group": 1,
"Vorschüsse und Darlehen": {
"account_number": "1140"
},
"Wertberichtigungen Vorschüsse und Darlehen": {
"account_number": "1149"
},
"Vorsteuer MWST Material, Waren, Dienstleistungen, Energie": {
"account_number": "1170"
},
"Vorsteuer MWST Investitionen, übriger Betriebsaufwand": {
"account_number": "1171"
},
"Verrechnungssteuer": {
"account_number": "1176"
},
"Forderungen gegenüber Sozialversicherungen und Vorsorgeeinrichtungen": {
"account_number": "1180"
},
"Quellensteuer": {
"account_number": "1189"
},
"Sonstige kurzfristige Forderungen": {
"account_number": "1190"
},
"Wertberichtigungen sonstige kurzfristige Forderungen": {
"account_number": "1199"
}
},
"Vorräte und nicht fakturierte Dienstleistungen": {
"account_number": "120",
"is_group": 1,
"Handelswaren": {
"account_number": "1200"
},
"Rohstoffe": {
"account_number": "1210"
},
"Werkstoffe": {
"account_number": "1220"
},
"Hilfs- und Verbrauchsmaterial": {
"account_number": "1230"
},
"Handelswaren in Konsignation": {
"account_number": "1250"
},
"Fertige Erzeugnisse": {
"account_number": "1260"
},
"Unfertige Erzeugnisse": {
"account_number": "1270"
},
"Nicht fakturierte Dienstleistungen": {
"account_number": "1280"
}
},
"Aktive Rechnungsabgrenzungen": {
"account_number": "130",
"is_group": 1,
"Bezahlter Aufwand des Folgejahres": {
"account_number": "1300"
},
"Noch nicht erhaltener Ertrag": {
"account_number": "1301"
}
}
},
"Anlagevermögen": {
"account_number": "14",
"is_group": 1,
"Finanzanlagen": {
"account_number": "140",
"is_group": 1,
"Wertschriften": {
"account_number": "1400"
},
"Wertberichtigungen Wertschriften": {
"account_number": "1409"
},
"Darlehen": {
"account_number": "1440"
},
"Hypotheken": {
"account_number": "1441"
},
"Wertberichtigungen langfristige Forderungen": {
"account_number": "1449"
}
},
"Beteiligungen": {
"account_number": "148",
"is_group": 1,
"Beteiligungen": {
"account_number": "1480"
},
"Wertberichtigungen Beteiligungen": {
"account_number": "1489"
}
},
"Mobile Sachanlagen": {
"account_number": "150",
"is_group": 1,
"Maschinen und Apparate": {
"account_number": "1500"
},
"Wertberichtigungen Maschinen und Apparate": {
"account_number": "1509"
},
"Mobiliar und Einrichtungen": {
"account_number": "1510"
},
"Wertberichtigungen Mobiliar und Einrichtungen": {
"account_number": "1519"
},
"Büromaschinen, Informatik, Kommunikationstechnologie": {
"account_number": "1520"
},
"Wertberichtigungen Büromaschinen, Informatik, Kommunikationstechnologie": {
"account_number": "1529"
},
"Fahrzeuge": {
"account_number": "1530"
},
"Wertberichtigungen Fahrzeuge": {
"account_number": "1539"
},
"Werkzeuge und Geräte": {
"account_number": "1540"
},
"Wertberichtigungen Werkzeuge und Geräte": {
"account_number": "1549"
}
},
"Immobile Sachanlagen": {
"account_number": "160",
"is_group": 1,
"Geschäftsliegenschaften": {
"account_number": "1600"
},
"Wertberichtigungen Geschäftsliegenschaften": {
"account_number": "1609"
}
},
"Immaterielle Werte": {
"account_number": "170",
"is_group": 1,
"Patente, Know-how, Lizenzen, Rechte, Entwicklungen": {
"account_number": "1700"
},
"Wertberichtigungen Patente, Know-how, Lizenzen, Rechte, Entwicklungen": {
"account_number": "1709"
},
"Goodwill": {
"account_number": "1770"
},
"Wertberichtigungen Goodwill": {
"account_number": "1779"
}
},
"Nicht einbezahltes Grund-, Gesellschafter- oder Stiftungskapital": {
"account_number": "180",
"is_group": 1,
"Nicht einbezahltes Aktien-, Stamm-, Anteilschein- oder Stiftungskapital": {
"account_number": "1850"
}
}
}
},
"Passiven": {
"account_number": "2",
"is_group": 1,
"root_type": "Liability",
"Kurzfristiges Fremdkapital": {
"account_number": "20",
"is_group": 1,
"Verbindlichkeiten aus Lieferungen und Leistungen": {
"account_number": "200",
"is_group": 1,
"Verbindlichkeiten aus Lieferungen und Leistungen (Kreditoren)": {
"account_number": "2000"
},
"Erhaltene Anzahlungen": {
"account_number": "2030"
}
},
"Kurzfristige verzinsliche Verbindlichkeiten": {
"account_number": "210",
"is_group": 1,
"Bankverbindlichkeiten": {
"account_number": "2100"
},
"Verbindlichkeiten aus Finanzierungsleasing": {
"account_number": "2120"
},
"Übrige verzinsliche Verbindlichkeiten": {
"account_number": "2140"
}
},
"Übrige kurzfristige Verbindlichkeiten": {
"account_number": "220",
"is_group": 1,
"Geschuldete MWST (Umsatzsteuer)": {
"account_number": "2200"
},
"Abrechnungskonto MWST": {
"account_number": "2201"
},
"Verrechnungssteuer": {
"account_number": "2206"
},
"Direkte Steuern": {
"account_number": "2208"
},
"Sonstige kurzfristige Verbindlichkeiten": {
"account_number": "2210"
},
"Beschlossene Ausschüttungen": {
"account_number": "2261"
},
"Sozialversicherungen und Vorsorgeeinrichtungen": {
"account_number": "2270"
},
"Quellensteuer": {
"account_number": "2279"
}
},
"Passive Rechnungsabgrenzungen und kurzfristige Rückstellungen": {
"account_number": "230",
"is_group": 1,
"Noch nicht bezahlter Aufwand": {
"account_number": "2300"
},
"Erhaltener Ertrag des Folgejahres": {
"account_number": "2301"
},
"Kurzfristige Rückstellungen": {
"account_number": "2330"
}
}
},
"Langfristiges Fremdkapital": {
"account_number": "24",
"is_group": 1,
"Langfristige verzinsliche Verbindlichkeiten": {
"account_number": "240",
"is_group": 1,
"Bankverbindlichkeiten": {
"account_number": "2400"
},
"Verbindlichkeiten aus Finanzierungsleasing": {
"account_number": "2420"
},
"Obligationenanleihen": {
"account_number": "2430"
},
"Darlehen": {
"account_number": "2450"
},
"Hypotheken": {
"account_number": "2451"
}
},
"Übrige langfristige Verbindlichkeiten": {
"account_number": "250",
"is_group": 1,
"Übrige langfristige Verbindlichkeiten (unverzinslich)": {
"account_number": "2500"
}
},
"Rückstellungen sowie vom Gesetz vorgesehene ähnliche Positionen": {
"account_number": "260",
"is_group": 1,
"Rückstellungen": {
"account_number": "2600"
}
}
},
"Eigenkapital (juristische Personen)": {
"account_number": "28",
"is_group": 1,
"Grund-, Gesellschafter- oder Stiftungskapital": {
"account_number": "280",
"is_group": 1,
"Aktien-, Stamm-, Anteilschein- oder Stiftungskapital": {
"account_number": "2800"
}
},
"Reserven und Jahresgewinn oder Jahresverlust": {
"account_number": "290",
"is_group": 1,
"Gesetzliche Kapitalreserve": {
"account_number": "2900"
},
"Reserve für eigene Kapitalanteile": {
"account_number": "2930"
},
"Aufwertungsreserve": {
"account_number": "2940"
},
"Gesetzliche Gewinnreserve": {
"account_number": "2950"
},
"Freiwillige Gewinnreserven": {
"account_number": "2960"
},
"Gewinnvortrag oder Verlustvortrag": {
"account_number": "2970"
},
"Jahresgewinn oder Jahresverlust": {
"account_number": "2979"
},
"Eigene Aktien, Stammanteile oder Anteilscheine (Minusposten)": {
"account_number": "2980"
}
}
}
},
"Betrieblicher Ertrag aus Lieferungen und Leistungen": {
"account_number": "3",
"is_group": 1,
"root_type": "Income",
"Produktionserlöse": {
"account_number": "3000"
},
"Handelserlöse": {
"account_number": "3200"
},
"Dienstleistungserlöse": {
"account_number": "3400"
},
"Übrige Erlöse aus Lieferungen und Leistungen": {
"account_number": "3600"
},
"Eigenleistungen": {
"account_number": "3700"
},
"Eigenverbrauch": {
"account_number": "3710"
},
"Erlösminderungen": {
"account_number": "3800"
},
"Verluste Forderungen (Debitoren), Veränderung Delkredere": {
"account_number": "3805"
},
"Bestandesänderungen unfertige Erzeugnisse": {
"account_number": "3900"
},
"Bestandesänderungen fertige Erzeugnisse": {
"account_number": "3901"
},
"Bestandesänderungen nicht fakturierte Dienstleistungen": {
"account_number": "3940"
}
},
"Aufwand für Material, Handelswaren, Dienstleistungen und Energie": {
"account_number": "4",
"is_group": 1,
"root_type": "Expense",
"Materialaufwand Produktion": {
"account_number": "4000"
},
"Handelswarenaufwand": {
"account_number": "4200"
},
"Aufwand für bezogene Dienstleistungen": {
"account_number": "4400"
},
"Energieaufwand zur Leistungserstellung": {
"account_number": "4500"
},
"Aufwandminderungen": {
"account_number": "4900"
}
},
"Personalaufwand": {
"account_number": "5",
"is_group": 1,
"root_type": "Expense",
"Lohnaufwand": {
"account_number": "5000"
},
"Sozialversicherungsaufwand": {
"account_number": "5700"
},
"Übriger Personalaufwand": {
"account_number": "5800"
},
"Leistungen Dritter": {
"account_number": "5900"
}
},
"Übriger betrieblicher Aufwand, Abschreibungen und Wertberichtigungen sowie Finanzergebnis": {
"account_number": "6",
"is_group": 1,
"root_type": "Expense",
"Raumaufwand": {
"account_number": "6000"
},
"Unterhalt, Reparaturen, Ersatz mobile Sachanlagen": {
"account_number": "6100"
},
"Leasingaufwand mobile Sachanlagen": {
"account_number": "6105"
},
"Fahrzeug- und Transportaufwand": {
"account_number": "6200"
},
"Fahrzeugleasing und -mieten": {
"account_number": "6260"
},
"Sachversicherungen, Abgaben, Gebühren, Bewilligungen": {
"account_number": "6300"
},
"Energie- und Entsorgungsaufwand": {
"account_number": "6400"
},
"Verwaltungsaufwand": {
"account_number": "6500"
},
"Informatikaufwand inkl. Leasing": {
"account_number": "6570"
},
"Werbeaufwand": {
"account_number": "6600"
},
"Sonstiger betrieblicher Aufwand": {
"account_number": "6700"
},
"Abschreibungen und Wertberichtigungen auf Positionen des Anlagevermögens": {
"account_number": "6800"
},
"Finanzaufwand": {
"account_number": "6900"
},
"Finanzertrag": {
"account_number": "6950"
}
},
"Betrieblicher Nebenerfolg": {
"account_number": "7",
"is_group": 1,
"root_type": "Income",
"Ertrag Nebenbetrieb": {
"account_number": "7000"
},
"Aufwand Nebenbetrieb": {
"account_number": "7010"
},
"Ertrag betriebliche Liegenschaft": {
"account_number": "7500"
},
"Aufwand betriebliche Liegenschaft": {
"account_number": "7510"
}
},
"Betriebsfremder, ausserordentlicher, einmaliger oder periodenfremder Aufwand und Ertrag": {
"account_number": "8",
"is_group": 1,
"root_type": "Expense",
"Betriebsfremder Aufwand": {
"account_number": "8000"
},
"Betriebsfremder Ertrag": {
"account_number": "8100"
},
"Ausserordentlicher, einmaliger oder periodenfremder Aufwand": {
"account_number": "8500"
},
"Ausserordentlicher, einmaliger oder periodenfremder Ertrag": {
"account_number": "8510"
},
"Direkte Steuern": {
"account_number": "8900"
}
},
"Abschluss": {
"account_number": "9",
"is_group": 1,
"root_type": "Equity",
"Jahresgewinn oder Jahresverlust": {
"account_number": "9200"
}
}
}
}

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