Adds three different barcodes and barcodes types to a test item and
checks that they are added correctly.
Adds a barcode that already exists, and checks a DuplicateEntryError
is raised.
Adds an invalid EAN barcode and checks InvalidBarcode (a subclass of
ValidationError) is raised.
Currently, it is difficult to add new custom barcode types for two reasons, both of which relate to validate_barcode in item.py:
- There is a bug where barcode types with a space in, such as Code 128, are split in two (so barcode_type is checked against 'Code' and '128' rather than 'Code 128'). This is fixed by splitting the Options field against a newline, instead of spaces.
- All barcodes are validated against the stdnum.ean library. This only handles EAN-8, EAN-13 and UPC-12 barcodes and any other barcode will fail. Barcodes with no type will continue to not be checked. Barcodes with the default barcode_types of EAN, UPC will continue to be checked. The non-default barcode_types of EAN-13 and EAN-8 will also be checked. The barcode_type is cast to upper case before this check is made so ean, upc, ean-13 and ean-8 will also be validated.
This allows people to add their own barcode types, such as Code 128 and QR codes. Users can add custom validation of these barcodes using the usual hooks, but they cannot remove the standard validation.
update_total_qty_field patch was using UPDATE statement with CASE
Now use INSERT INTO with ON DUPLICATE KEY UPDATE clause which
allows this query to use indexes and update multiple rows per query.
* -Added field def_warehouse that sets warehouse of all items
-Grouped warehouse fields together and put raw materies supplied before items table, it will only show if there are any items supplied
* Set def_warehouse in test_sales_order.py
* Changed from def_warehouse to set_warehouse
* Rest of def_warehouse to set_warehouse
* feat(delivery_trip_status): Update Delivery Trip status based on visited stops
* feat(delivery_trip_status): Fix tests
* feat(delivery_trip_status): Fix allow on submit for status
* feat(delivery_trip_status): Change status mapping
* feat(delivery_trip_status): Fix patch
* Update update_delivery_trip_status.py
* Add new button to Sales Order form - Request for Raw Materials
* Modify get_work_order_items function
* Commonify functions in Production Plan to make it compatible with new feature
* Create and submit Material Request from Sales Order
* Link Sales Order with Material Request
* Minor
* Rename label
* Fix Codacy
* Modify as per review suggestions
- Move dialog to a new function
- Move checkboxes below other fields
* Minor changes
* Check for permissions
* Add common checkboxes for all items
* Fix codacy
* fix: Travis
* fix: Use variable to store query result
* fix: Add comment before fetching exploded items
* refactor: Break into multiple functions
* test: Add test case
* Update transaction.js
* setup barcode scan
stock entry controller not inherited from transaction.js, need to call setup barcode scan from transaction.js
* fix bug of item_code change always reset qty to 0
when calling frappe.model.set_value(dt,dn,'item_code',xxx), even qty is set, system always reset qty to 0.
* Update transaction.js
* Update transaction.js
* Update transaction.js
* Update transaction.js
* Update transaction.js
* Update transaction.js
* clean up barcode logic for transactions
* call scan_barcode method for stock entry
* separate out logic for searching serial, batch or barcode number
* added scan barcode field in transactions doctype
* search barcode-serial-batch sequence, code rectify
* hide all barcode related field if disabled from settings
* remove print statement
* Update stock_entry.py
* Purchase Analytics Query Report
* Minor Changes
* Codacy Issue Fixes
* Codacy Issues Fixed
* Code cleaning and optimization
* Indentation Issue Fix
* Code cleaning and better function naming
* Added link for purchase analytics in buying.py
* Added link for production analytics in manufacturing.py
* Commonified purchase-analytics using Analytics class
* Codacy issue fix
In version
```
Installed Apps
ERPNext: v11.0.3-beta.20 () (staging)
Frappe Framework: v11.0.3-beta.25 () (staging)
```
When creating a new Sales invoice without healthcare active we have this error
```
Not permitted
Insufficient Permission for Patient
```
Console log
```
Traceback (most recent call last):
File "/home/frappe/auroraone-v11/apps/frappe/frappe/app.py", line 61, in application
response = frappe.handler.handle()
File "/home/frappe/auroraone-v11/apps/frappe/frappe/handler.py", line 21, in handle
data = execute_cmd(cmd)
File "/home/frappe/auroraone-v11/apps/frappe/frappe/handler.py", line 56, in execute_cmd
return frappe.call(method, **frappe.form_dict)
File "/home/frappe/auroraone-v11/apps/frappe/frappe/__init__.py", line 1007, in call
return fn(*args, **newargs)
File "/home/frappe/auroraone-v11/apps/frappe/frappe/desk/search.py", line 53, in search_link
search_widget(doctype, txt, query, searchfield=searchfield, page_length=page_length, filters=filters, ignore_user_permissions=ignore_user_permissions)
File "/home/frappe/auroraone-v11/apps/frappe/frappe/desk/search.py", line 149, in search_widget
as_list=not as_dict)
File "/home/frappe/auroraone-v11/apps/frappe/frappe/__init__.py", line 1235, in get_list
return frappe.model.db_query.DatabaseQuery(doctype).execute(None, *args, **kwargs)
File "/home/frappe/auroraone-v11/apps/frappe/frappe/model/db_query.py", line 40, in execute
raise frappe.PermissionError(self.doctype)
PermissionError: Patient
```
* Sales Analytics Report
* Codacy issue fixes and name column addition
* Minor Fixes
* Minor Changes
* Codacy Issue Fixes
* Codacy Issue Fixes
* Bug Fixes
* Code cleaning and optimization
* Deleted Duplicate code
* Indentation Issue Fixes
* Added Supplier Condition
* Cleaned code and better function naming
* Added report link for sales analytics in selling.py
* fix(patch): Patch to delete old analytics reports
* feat(refactor): Created class and refactored code using object oriented paradigm
* Column condition fix
* Minor condition fix
* Minor fix
* parent child map for purchase analytics
* Minor Fixes in get_periodic_data
* Used dots for filters instead of brackets
* Minor Bug fix in get_period_date_ranges
* Test Cases for Analytics Report
* Minor improvements
* [Feature] Route optimization for Delivery Trip stops
* Process and optimize the entire route, with or without locks
* Form sets of routes for optimization based on applied lock positions
* Re-arrange stops based on the optimized routes and lock positions
* Set delay times between stops - offset estimation times by delays cumulatively
* Fix codacy errors
* Fix travis
* feat(route_optimization): Set estimated route distance from Google Maps
* feat(route_optimization): Add tests for route lists
* feat(route_optimization): Fix tests
Fix 'Sales Person-wise Transaction Summary' Report by fetching the
correct Warehouse for the Item fron the respective, Sales Order/Sales
Invoice/ Delivery Note
* fix(perpetual inventory): Get warehouse account map only if perpetual inventory enabled
* fix(perpetual inventory): Get warehouse account map only if perpetual inventory enabled
* Added Include UOM field for Stock Balane, Stock Ledger and Stock Projected Qty
* Add columns in result list-of-lists instead of converting reports to list-of-dicts
* For requested changes
-Merged conversion factor query with item detail queries
-Ensuring snail_case
-Made columns consistently list-of-dicts
* Minor fix for the problem that Net Total, Net Rate, Net Amount field would not be shown when default taxes were fetched
* Prevent net_rate from becoming NaN
* -Fixed problem that party_account_currency was not set in mapped document
-Fixed problem that discount amount was not recalculated (in mapped document)
-Fixed problem that set_dynamic_fields would work only on certain condition that led to showing Total (Company Currency) field even when using company currency
* Create QuickBooks Connector Single DocType
* Create interface for user authorization and obtaining authorization code
* Obtain Access token using authorization code
* Fetch a random customer
* Schedule fetching as a background job
* Save fetched customer
* Fetch all customers, take care of pagination
* Save fetched customers
* Create a custom field for storing Quickbooks ID
* Don't save already saved customers
* Commit every successful insert
* No need of allow_guest=True
* Fetch Items as well
* Store Customer Addresses as well.
* Remove redundant custom field creation code
* Stupid refactoring
* Some more refactoring
* Fetch and Save Suppliers as well
* Save accounts. Really a hack as of now.
* Fetch and save invoices, Take care of child items as well
* Fetch Taxes as well
* Set currency on Sales Invoice
* Correctly Link Items, Handle markups
* Don't enqueue, Need to wait forever for testing sometimes
* Set margin rate correctly
* Correct fieldname is tax_amount not amount
* Fetch with maximum possible batch size
* Don't print unnecessary info
* Fetch Journal Entries
* Fetch Purchase Invoices (Bill)
* Don't perform reauthentication if you already have an access_token
* Don't need those print statements anymore
* Refresh access_token if request fails
* Fetch Payment Entry(Payment)
* Map QB items to ERPNext rather than other way around
* Don't need a huge comment block as of now
* Fetch Payment Entries against Purchase Invoices (BillPayment)
* Rename Quickbooks Connector to Migrator
* Make oauth settings configurable
* Make company configurable
* Make default accounts configurable
* Fetch accounts and other masters separately
* Show realtime progress
* Check if entries exist before attempting insert
* Suppress other annoying messages
* Tracebacks are good for health
* Don't want rounded total
* Don't call fetch after authorization (Need to somehow separate these)
* Make credit_to account payable
* When generating payment entry mention bank_account as well
* Cleanup
* Add custom buttons and reflect current state in form ui
* Show necessary fields on form depending on the current state
* Cleanup
* Minor fixes
* Set income and expense account on items.
* Set currency for Account.
* Stupid VSCode
* Remove redundant code
* Check for existing Payment and BillPayment correctly
* Cache API response for faster development
* Don't maintain stock for now, Seems to solve the issue with 'Stock Received but not billed'
* Cleanup
* Add methods to remove inserted data completely (Development)
* Don't commit in every iteration
* Set account head based on TaxRate in Sales Invoice
* Fetch and cache TaxCode
* Add methods to fetch TaxCode and TaxRate from cache
* Set item wise tax breakup, Don't use Actual Tax
* Use both TaxRateLists
* Set Itemwise tax on Purchase Invoice as well
* Set bank_amount, while creating payment entries
* Remove print statements
* Add Shipping in taxes child table of Sales Invoice
* Set posting date on Payment Entries against Invoices
* Fetch and save expenses as Journal Entries
* Fetch and save Deposits as Journal Entries
* Fetch and Save Credit and Debit Notes
* Fetch and save SalesReceipt
* Record Shipping as Item instead of Tax
* Minor Fixes
* Fetch Advance Payments
* Set account_type during Account creation
* Choose receivable account in Invoice based on currency
* Remove receivable_account field
* Account type is already set during account creation
* Set receivable account based on currency in Sales Receipt and Credit Memo
* Set receivable account on Customer
* Save Company Preferences
* Set shipping_account based on company preferences
* Set cost center in Sales Invoice Items and Taxes
* Make Account name unique in case of duplicate account name
* Fetch and Save TaxPayment as Journal Entry
* Record UndepositedFunds Account in cache if found
* Credit UndepositedFunds account when mentioned in Deposit
* Debit Cashback account as well if mentioned in Deposit
* Set currency conversion rate
* Set is_group field correctly for accounts
* Preserve account hierarchy
* Use quickbooks_id and company together for filtering
* Make new custom field 'company' on Supplier Customer and Item
* Use comapny field for filtering Customer, Item, Supplier
* Shipping Account is only available if shipping is enabled for comapny
* Invoice might not have TxnTaxDetail.TaxLine
* Lookup TaxRate account correctly
* TaxCode might not have SalesTaxRateList PurchaseTaxRateList or Both
* TaxCode might not have SalesTaxRateList and PurchaseTaxRateList
* Remove unnecessary UI elements
* Allow multiple companies to have customers with same name
* Refactor account_type
* Create a leaf an account for every group account
* Item and Tax list creation needs more information
* Supports discount in Invoice
* Save Invoice as Journal Entry when itemwise details are unavailable
* Credit=True represents a refund rather than charge
* Mode of Payment not synced, setting as Cash for now
* Tax code may also be set for an entire invoice
* Fetch General Ledger Report correctly
* Refactor fetching entries from General Ledger Report
* Tax Payment is the same as Sales Tax Payment and Purchase Tax Payment
* append_number_if_name_exists is stupid, Reimplementing
* Don't guess credit/debit for Tax Payment and Advanced Payment
* Bill Payment shouldn't assume full payment
* Save Payment as Journal Entry
* Make Client ID and Client Secret Default
* Remove unused python imports
* removed are_accounts_synced()
* Don't store translated values in database
* Endpoints as a field
* Major refactor - functions to methods
* Major Refactor Functions to Methods
* Major Refactor Fix Stuff
* Minor Changes
* Save Refund As well
* Minor Refactor (SI varations to SI, PI variations to PI)
* Record Inventory Qty Adjust Entries
* QBM Final Touches
* Make changes suggested in review