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
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.
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.
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.
* 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 10754831c33b3459d5a45c98f875afa48a444627)
Co-authored-by: Nabin Hait <nabinhait@gmail.com>
* 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
* 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>
When two transactions are inserted parallelly then previous SLE could be
incorrect for some of them. Locking SLE table would prevent reading from
it till transaction is complete.
* fix: Item valuation for internal stocktransfers
* fix: Consider conversion factor for invoices
* fix: Add missing set warehouse fields
* fix: Add validations and other fixes
* fix: Fixes in flow
* fix: Internal sales item link in Purchase Invoice
* fix: Debugging
* fix: Debug travis
* fix: Remove commented code
* fix: Rate forcing in sales order
* fix: Unreallized profit in Sales Register
* fix: Item wise gst sales register fix
* fix: From warehouse in Purchase Order
* fix: Target field in Sales Invoice
* fix: remove self
* fix: GST Purchasse register and other fixes
* fix: Add shipping_address to no field map
* fix: Ref doc map
* fix: Test Cases
* fix: address mapping between sales and purchase document
* fix: Import Error
* fix: Tax updation for internal invoices
* fix: Purchase Order and Invoice linking
* fix: Internal Party validation fix
* fix: validation
* fix(india): GST Taxes for intra state transfer
* fix(india): GST Taxes for intra state transfer
Co-authored-by: Nabin Hait <nabinhait@gmail.com>
* feat: Reposting logic for future finished/transferred item
* feat: added fields to identify needs to recalculate rate while reposting
* refactor: Set rate for outgoing and finished items
* refactor: Arranged fields in Stock Entry item table and added fields to identify finished and scrap item
* refactor: Arranged fields in Stock Entry item table and added fields to identify finished and scrap item
* refactor: Get outgoing rate for purchase return
* refactor: Get incoming rate for sales return
* test: Added tests for reposting valuation of transferred/finished/returned items
* feat: added incoming rate field in DN, SI and Packed Item table
* feat: get incoming rate for returned item
* fix: no error while getting valuation rate in stock entry
* fix: update stock ledger for DN and SI
* feat: update item valuation rate in PR and PI based on supplied items cost
* feat: SLE reposting logic for sales return and subcontracted item with test cases
* feat: update qty in future sle
* feat: repost future sle and gle via Repost Item Valuation
* fix: Skip unwanted function calling while reposting
* fix: repost sle for specific item and warehouse
* test: Modified tests for backdated stock reco
* fix: ignore cancelled sle in few methods
* feat: role allowed to do backdated entry
* feat: Show reposting status on stock valuation related reports
* fix: minor fixes
* fix: fixed sider issues
* fix: serial no fix related to immutable ledger
* fix: Test cases fixes related to perpetual inventory
* fix: Test cases fixed
* fix: Fixed reposting on cancel and test cases
* feat: Restart reposting item valuation
* refactor: Code cleanup using small functions and test case fixes
* fix: minor fixes
* fix: Raise on error while reposting item valuation
* fix: minor fix
* fix: Tests fixed
* fix: skip some validation ig gle made from reposting
* fix: test fixes
* fix: debugging stock and account validation
* fix: debugging stock and account validation
* fix: debugging travis for stock and account sync validation
* fix: debugging travis
* fix: debugging travis
* fix: debugging travis
* fix: Reverse GL entry on cancellation of document
* fix: Removed set posting time field for multiple docs
* fix: Stop future reposting and reverse entry for purchase receipt and delivery note
* fix: Change is_cancelled field from select to check
* Revert "fix: Removed set posting time field for multiple docs"
This reverts commit 81fb808db7da69ab1e58ba226c0cd0b77e5b90c8.
* fix: Multiple fixes in GL Entry
* fix: Remove future reporting from doctypes
* fix: Canceled entry filters in Stock Ledger and General Ledger Report
* fix: Remove print statement
* fix: Validation for back dated entries
* fix: Codacy fixes
* fix: Add ignore links to multiple doctypes
* fix: Codacy Fixes
* fix: Ignore GL Entry and Stock Ledger entry while cancel
* fix: Test case fixes
* fix: Patch
* fix: Codacy
* fix: Budget Test Cases
* fix: Patch
* fix: Patch
* fix: Multiple test cases
* fix: changes in make_reverse_entry function
* fix: Update patch
* fix: Test Cases
* fix: Test Case fixes
* fix: Move patch upward in patches.txt
* fix: Budget Test Cases
* fix: Test Case and codacy
* fix: Patch
* fix: Minor label and UX fixes
* fix: Move freezing date check
* fix: Test Cases
* fix: Test cases
* fix: Test Cases
* fix: Test Case
* fix: Remove update_gl_entries_after function
* fix: Remove update_gl_entries_after function
* fix: Test Cases
* fix: Fiscal Year wise backdated entry
* fix: Update entries only for current SLE
* fix: Remove is_cancelled
* fix: Test Cases
* fix: Test cases
* fix: Test Cases
* fix: Uncomment account and stock balance sync logic
* fix: Stock balance and Account balance out of sync fixes
* fix: Test Cases
* fix: Test cases for POS, Stock Reco and Purchase Receipt
* fix: Stock Reco tests
* fix: Test stock reco precision
* fix: Test stock reco for fifo precision
* fix: Test stock reco for fifo precision
* fix: Stock Entry test case
Co-authored-by: Nabin Hait <nabinhait@gmail.com>
* Don't overwrite start and end date comes from payroll entry
* Get valuation rate from historical SLE even if it is zero, if records exists
* Valid till should be autoset if not any default value
* Set status of expense claim based on is_paid check
* old style raise --> raise() for Python 3
* old style exception --> new style for Python 3
* old style exception --> new style for Python 3
* old style exception --> new style for Python 3
* old style exception --> new style for Python 3
* old style exception --> new style for Python 3
* old style exception --> new style for Python 3
* old style exception --> new style for Python 3
* old style exception --> new style for Python 3
* old style exception --> new style for Python 3
* old style raise --> raise() for Python 3
* old style raise --> raise() for Python 3
* old style exception, raise --> new style for Python 3