mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-22 06:29:20 +00:00
Merge branch 'develop'
This commit is contained in:
@@ -1,2 +1,2 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
__version__ = '4.23.0'
|
__version__ = '4.24.0'
|
||||||
|
|||||||
@@ -18,17 +18,17 @@ class CForm(Document):
|
|||||||
`tabSales Invoice` where name = %s and docstatus = 1""", d.invoice_no)
|
`tabSales Invoice` where name = %s and docstatus = 1""", d.invoice_no)
|
||||||
|
|
||||||
if inv and inv[0][0] != 'Yes':
|
if inv and inv[0][0] != 'Yes':
|
||||||
frappe.throw("C-form is not applicable for Invoice: %s" % d.invoice_no)
|
frappe.throw("C-form is not applicable for Invoice: {0}".format(d.invoice_no))
|
||||||
|
|
||||||
elif inv and inv[0][1] and inv[0][1] != self.name:
|
elif inv and inv[0][1] and inv[0][1] != self.name:
|
||||||
frappe.throw("""Invoice %s is tagged in another C-form: %s.
|
frappe.throw("""Invoice {0} is tagged in another C-form: {1}.
|
||||||
If you want to change C-form no for this invoice,
|
If you want to change C-form no for this invoice,
|
||||||
please remove invoice no from the previous c-form and then try again""" %
|
please remove invoice no from the previous c-form and then try again"""\
|
||||||
(d.invoice_no, inv[0][1]))
|
.format(d.invoice_no, inv[0][1]))
|
||||||
|
|
||||||
elif not inv:
|
elif not inv:
|
||||||
frappe.throw("Row %s: Invoice %s is invalid, it might be cancelled / does not exist. \
|
frappe.throw("Row {0}: Invoice {1} is invalid, it might be cancelled / does not exist. \
|
||||||
Please enter a valid Invoice" % d.idx, d.invoice_no)
|
Please enter a valid Invoice".format(d.idx, d.invoice_no))
|
||||||
|
|
||||||
def on_update(self):
|
def on_update(self):
|
||||||
""" Update C-Form No on invoices"""
|
""" Update C-Form No on invoices"""
|
||||||
|
|||||||
@@ -112,6 +112,8 @@ class AccountsController(TransactionBase):
|
|||||||
if item.get("item_code"):
|
if item.get("item_code"):
|
||||||
args = parent_dict.copy()
|
args = parent_dict.copy()
|
||||||
args.update(item.as_dict())
|
args.update(item.as_dict())
|
||||||
|
if not args.get("transaction_date"):
|
||||||
|
args["transaction_date"] = args.get("posting_date")
|
||||||
ret = get_item_details(args)
|
ret = get_item_details(args)
|
||||||
|
|
||||||
for fieldname, value in ret.items():
|
for fieldname, value in ret.items():
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ app_publisher = "Web Notes Technologies Pvt. Ltd. and Contributors"
|
|||||||
app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations"
|
app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations"
|
||||||
app_icon = "icon-th"
|
app_icon = "icon-th"
|
||||||
app_color = "#e74c3c"
|
app_color = "#e74c3c"
|
||||||
app_version = "4.23.0"
|
app_version = "4.24.0"
|
||||||
|
|
||||||
error_report_email = "support@erpnext.com"
|
error_report_email = "support@erpnext.com"
|
||||||
|
|
||||||
|
|||||||
@@ -94,3 +94,5 @@ erpnext.patches.v4_2.discount_amount
|
|||||||
erpnext.patches.v4_2.update_landed_cost_voucher
|
erpnext.patches.v4_2.update_landed_cost_voucher
|
||||||
erpnext.patches.v4_2.set_item_has_batch
|
erpnext.patches.v4_2.set_item_has_batch
|
||||||
erpnext.patches.v4_2.update_stock_uom_for_dn_in_sle
|
erpnext.patches.v4_2.update_stock_uom_for_dn_in_sle
|
||||||
|
erpnext.patches.v4_2.repost_reserved_qty
|
||||||
|
erpnext.patches.v4_2.repost_sle_for_si_with_no_warehouse
|
||||||
12
erpnext/patches/v4_2/repost_reserved_qty.py
Normal file
12
erpnext/patches/v4_2/repost_reserved_qty.py
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
||||||
|
# License: GNU General Public License v3. See license.txt
|
||||||
|
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
import frappe
|
||||||
|
from erpnext.utilities.repost_stock import update_bin_qty, get_reserved_qty
|
||||||
|
|
||||||
|
def execute():
|
||||||
|
for item_code, warehouse in frappe.db.sql("select item_code, warehouse from tabBin where ifnull(reserved_qty, 0) < 0"):
|
||||||
|
update_bin_qty(item_code, warehouse, {
|
||||||
|
"reserved_qty": get_reserved_qty(item_code, warehouse)
|
||||||
|
})
|
||||||
34
erpnext/patches/v4_2/repost_sle_for_si_with_no_warehouse.py
Normal file
34
erpnext/patches/v4_2/repost_sle_for_si_with_no_warehouse.py
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
||||||
|
# License: GNU General Public License v3. See license.txt
|
||||||
|
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
import frappe
|
||||||
|
from erpnext.stock.stock_ledger import NegativeStockError
|
||||||
|
|
||||||
|
def execute():
|
||||||
|
si_list = frappe.db.sql("""select distinct si.name
|
||||||
|
from `tabSales Invoice Item` si_item, `tabSales Invoice` si
|
||||||
|
where si.name = si_item.parent and si.modified > '2015-02-16' and si.docstatus=1
|
||||||
|
and ifnull(si_item.warehouse, '') = '' and ifnull(si.update_stock, 0) = 1
|
||||||
|
order by posting_date, posting_time""", as_dict=1)
|
||||||
|
|
||||||
|
failed_list = []
|
||||||
|
for si in si_list:
|
||||||
|
try:
|
||||||
|
si_doc = frappe.get_doc("Sales Invoice", si.name)
|
||||||
|
si_doc.docstatus = 2
|
||||||
|
si_doc.on_cancel()
|
||||||
|
|
||||||
|
si_doc.docstatus = 1
|
||||||
|
si_doc.set_missing_item_details()
|
||||||
|
si_doc.on_submit()
|
||||||
|
frappe.db.commit()
|
||||||
|
except:
|
||||||
|
failed_list.append(si.name)
|
||||||
|
frappe.local.stockledger_exceptions = None
|
||||||
|
frappe.db.rollback()
|
||||||
|
|
||||||
|
print "Failed to repost: ", failed_list
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -148,7 +148,7 @@ erpnext.TransactionController = erpnext.stock.StockController.extend({
|
|||||||
order_type: me.frm.doc.order_type,
|
order_type: me.frm.doc.order_type,
|
||||||
is_pos: cint(me.frm.doc.is_pos),
|
is_pos: cint(me.frm.doc.is_pos),
|
||||||
is_subcontracted: me.frm.doc.is_subcontracted,
|
is_subcontracted: me.frm.doc.is_subcontracted,
|
||||||
transaction_date: me.frm.doc.transaction_date,
|
transaction_date: me.frm.doc.transaction_date || me.frm.doc.posting_date,
|
||||||
ignore_pricing_rule: me.frm.doc.ignore_pricing_rule,
|
ignore_pricing_rule: me.frm.doc.ignore_pricing_rule,
|
||||||
doctype: item.doctype,
|
doctype: item.doctype,
|
||||||
name: item.name,
|
name: item.name,
|
||||||
|
|||||||
2
setup.py
2
setup.py
@@ -1,7 +1,7 @@
|
|||||||
from setuptools import setup, find_packages
|
from setuptools import setup, find_packages
|
||||||
import os
|
import os
|
||||||
|
|
||||||
version = "4.23.0"
|
version = "4.24.0"
|
||||||
|
|
||||||
with open("requirements.txt", "r") as f:
|
with open("requirements.txt", "r") as f:
|
||||||
install_requires = f.readlines()
|
install_requires = f.readlines()
|
||||||
|
|||||||
Reference in New Issue
Block a user